Debian サーバーがクラッシュしたのはなぜですか?

Debian サーバーがクラッシュしたのはなぜですか?

昨日の夕方に Debian サーバーを新しくインストールしました。ホスティング会社から提供された debian-7.0-amd64-minimal というイメージを使用しました。apache2、mysql、php、vim、lynx をインストールし、いくつかの Web ページを構成しました。その後、crontab (10 分ごとに実行) を構成しました。以前にも同様の問題がありました (再インストールすると解決するかもしれないと思いました)。

数時間後、サーバーが何らかの理由でクラッシュしました。Web サーバーにアクセスできず、SSH 経由でマシンにアクセスできませんが、どういうわけかまだ動作しています。ホストの Web インターフェイスでマシンが動作しているのを確認できます。それでもどのサービスにもアクセスできないため、再起動する必要があります (ホストが提供する Web インターフェイス経由)。

再起動後、関連するタイムスタンプを持つ/var/log内のすべてのログを常にチェックしました。ただし、散発的なエラーが1つだけあります。

[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 スクリプトによって発生します (Web ページは 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 が割り当てられていました。そのため、ランダムな接続の問題が発生していました。

関連情報