Apache2 サーバーが応答を停止しました

Apache2 サーバーが応答を停止しました

どこをもっと深く掘り下げるべきか、アドバイスをお待ちしています。

すぐに、Apache2 サーバーは起動後 2 ~ 15 時間後にリクエストの処理を停止します。その結果、service apache2 restart半日ごとに処理する必要があります。

ロングバージョン:

  1. 私は専用サーバー (Ubuntu 13.04) からいくつかの Web サイト (Apache 2.2.22、2013 年 7 月 12 日構築) を実行しています。
  2. Apache2 サーバーは半年以上正常に動作していましたが、突然、Apache プロセスが再起動されるまで、すべての Web サイト (約 5 つのサイト) でリクエストの処理が停止します。
  3. この問題に関して、/var/log/apache に異常なログは見つかりませんでした。
  4. service apache2 statusプロセスが実行中であると報告する

あなたの提案や、私の状況ではどうすればいいのかを聞かせてもらえると嬉しいです。

アップデート:

ランニングnetstat -an | grep 80

tcp6       0      0 :::80                   :::*                    LISTEN
tcp6     325      0 SERV_IP:80       IP_A:35514     CLOSE_WAIT
tcp6     332      0 SERV_IP:80       IP_B:34198     CLOSE_WAIT
tcp6     379      0 SERV_IP:80       IP_C:57859     CLOSE_WAIT
tcp6       0      0 SERV_IP:80       IP_A:35060     CLOSE_WAIT
tcp6     360      0 SERV_IP:80       IP_A:38481     CLOSE_WAIT
tcp6     466      0 SERV_IP:80       IP_B:56324     CLOSE_WAIT
tcp6     361      0 SERV_IP:80       IP_A:53466     CLOSE_WAIT
tcp6       1      0 SERV_IP:80       IP_A:38102     CLOSE_WAIT
tcp6     196      0 SERV_IP:80       IP_E:58125     ESTABLISHED

そして、このようなエントリがさらに約 150 件あります。

ps aux | grep apache:

root      2968  0.0  0.0 452240 21116 ?        Ss   16:08   0:01 /usr/sbin/apache2 -k start
www-data  5217  0.0  0.0 463584 23820 ?        S    17:04   0:03 /usr/sbin/apache2 -k start

後半の行 (www-data) は約 120 個あるので、Apache プロセスは 120 個だと思いますか?

strafeapache2 ルートプロセスで使用:

 sudo strace -f -p 2968
Process 2968 attached - interrupt to quit
select(0, NULL, NULL, NULL, {0, 264394}) = 0 (Timeout)
wait4(-1, 0x7fff6d157a6c, WNOHANG|WSTOPPED, NULL) = 0
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
wait4(-1, 0x7fff6d157a6c, WNOHANG|WSTOPPED, NULL) = 0

www-data プロセスの 1 つで使用します。

sudo strace -f -p 8554
Process 8554 attached - interrupt to quit
flock(40, LOCK_EX

うわー、どうやら Apache プロセスが停止し、接続の最大制限を超えると新しいインスタンスの作成が停止するようです。しかし、なぜ停止するのでしょうか?

htop、iotop、jnettop は異常を報告しません。(オーバーロードなし)

更新2: 過去2日間、サーバーがクラッシュしなくなりました。そのため、これ以上の情報を得ることができません。代わりに、あなたの助けに感謝し、回答を受け入れます。さらに情報が得られ次第、よりよく構成された本文の新しい質問へのリンクを残します。ありがとうございます

答え1

「service apache2 status」が何を報告しても、ps aux を実行すると Apache プロセスが表示されますか?

問題が発生したときに netstat -n を実行できますか? ファイル記述子などのリソースが不足しているか、開いている接続が多すぎる可能性があります。

問題が発生している間、CPU 使用率は高くなっていますか? システムのメモリが不足してスラッシングが発生している可能性がありますか?

http サーバーは接続拒否で応答しますか、それとも接続がタイムアウトしますか?

後者の場合、strace -f -p [apachepid] を実行することをお勧めします。これにより、どのシステム コールが要求をブロックしているかがわかる場合があります。前者の場合、おそらく Apache がクラッシュしています。

Tomcat または別のアプリケーション サーバーをプロキシしますか、それとも単純な静的 HTML を提供しますか?

認証を設定しましたか?例えば、認証層で何か問題が発生している可能性があります

アップデート:

2 番目の strace で、flock(40,LOCK_EX が確認できます。プロセスがどこかで排他ロックを取得しようとしている可能性があります。lsof -n -p 8554 (または flock を試みる pid) を実行して、どのファイルをロックしようとしているかを確認できます (40 はファイル記述子です)。また、「ls /proc/8554/fd」を実行することもできます。

関連情報