我昨天晚上新安装了一台 Debian 服务器。我使用了来自我的托管商的名为 debian-7.0-amd64-minimal 的映像。刚刚安装了apache2、mysql、php、vim、lynx并配置了一些网页。之后我配置了一个 crontab (每 10 分钟运行一次)。我以前也遇到过类似的问题(我认为重新安装可能会解决它)。
几个小时后,服务器莫名其妙地崩溃了。我无法访问网络服务器,无法通过 ssh 访问机器,但不知何故它仍然运行。我可以从我的托管商的网络界面中看到机器正在运行。尽管如此,由于我无法访问任何服务,我必须重新启动它(通过我的托管服务商提供的网络界面)。
重新启动后,我总是检查 /var/log 中具有相关时间戳的所有日志。但只有一处偶发错误
[Fri Mar 28 12:40:17 2014] [error] [client x.x.x.x] PHP Warning: file_get_contents(http://www.bloomberg.com/quote/DAX:IND): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known
这是由通过 crontab 调用的 php 脚本引起的(使用 lynx 调用网页) DNS 服务器是来自 google 8.8.8.8 的服务器。然而,这种情况只是有时发生,通常服务会在之后继续工作。这就是为什么我认为这是一个不同的问题。我在上次崩溃后禁用了 crontab,如果问题现在自行解决,则更新这篇文章。
另一件让我相信服务器没有完全崩溃的事情是那些 crontab 仍然继续工作
Mar 28 10:00:01 aryx /USR/SBIN/CRON[10947]: (root) CMD (lynx -dump http://[webpage]/cron/cronjob.php)
Mar 28 10:00:06 aryx /USR/SBIN/CRON[10946]: (CRON) info (No MTA installed, discarding output)
Mar 28 10:09:01 aryx /USR/SBIN/CRON[11068]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -ignore_readdir_race -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Mar 28 10:10:01 aryx /USR/SBIN/CRON[11088]: (root) CMD (lynx -dump http://[webpage]/cron/cronjob.php)
Mar 28 10:10:21 aryx /USR/SBIN/CRON[11087]: (CRON) info (No MTA installed, discarding output)
Mar 28 10:20:01 aryx /USR/SBIN/CRON[11221]: (root) CMD (lynx -dump http://[webpage]/cron/cronjob.php)
Mar 28 10:20:21 aryx /USR/SBIN/CRON[11220]: (CRON) info (No MTA installed, discarding output)
即使网络服务器已经在 10:00 到 10:10 之间的某个时间崩溃了(或者当时崩溃的任何情况)(此时执行下一个 cron 调用)
[webpage]:80 [ip-address] - - [28/Mar/2014:09:50:01 +0100] "GET /cron/cronjob.php HTTP/1.0" 200 208 "-" "Lynx/2.8.8dev.12 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.18"
[webpage]:80 [ip-address] - - [28/Mar/2014:10:00:01 +0100] "GET /cron/cronjob.php HTTP/1.0" 200 208 "-" "Lynx/2.8.8dev.12 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.18"
[webpage]:80 [ip-address] - - [28/Mar/2014:12:00:02 +0100] "GET /cron/cronjob.php HTTP/1.0" 200 208 "-" "Lynx/2.8.8dev.12 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.18"
上午 10 点之前也发生过这种不正常现象
Mar 28 09:39:01 aryx /USR/SBIN/CRON[10658]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -ignore_readdir_race -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)*
有什么建议可能是错误的吗?
更新: 使用 plog,崩溃时间(19:31 到 32 之间)唯一值得注意的事件是 apache 进程的日志文件:
3-28 19:31 S 20 0s 1 185.34MB 7.46MB 96.2% 1012kB 16.66MB 17.73MB 429 0
3-28 19:32 S 20 0s 1 187.50MB 9.68MB 89.1% 1804kB 16.79MB 17.86MB 1281 0
3-28 19:33 S 20 0s 1 187.50MB 9.68MB 89.1% 1804kB 16.79MB 17.86MB 1281 0
答案1
问题实际上不是服务器本身。该服务器是虚拟专用服务器,并分配了一个 IP,该 IP 也可供网络中的另一台服务器使用。这就是为什么会出现一些随机连接问题!