![Debian サーバーがクラッシュしたのはなぜですか?](https://rvso.com/image/52117/Debian%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%8C%E3%82%AF%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%97%E3%81%9F%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
昨日の夕方に 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 が割り当てられていました。そのため、ランダムな接続の問題が発生していました。