為什麼我的 Debian 伺服器崩潰了?

為什麼我的 Debian 伺服器崩潰了?

我昨晚新安裝了一台 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 也可供網路中的另一台伺服器使用。這就是為什麼會出現一些隨機連接問題!

相關內容