応答しないWebサーバーをデバッグする方法

応答しないWebサーバーをデバッグする方法

私たちは中規模 EC2 インスタンスUbuntu 12.04 を実行し、Apache 経由で約 12 個の小さな PHP Web アプリケーションを提供しています。

約 1 日おきにサーバーが応答しなくなり、機能を回復するにはインスタンスを再起動する必要があります。この間、HTTP または SSH 経由でサーバーにアクセスすることはできません。

毎回、最後に記録された Apache リクエストは、4MB の PDF ドキュメントを提供する PHP アプリケーションに対するものです。ユーザー エージェントは常にクライアントを iPad (具体的にはMozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25) として識別し、多くの場合同じ IP アドレスであるため、同じユーザーである可能性が高くなります。

PHP アプリケーションはレガシー アプリケーションであり、ファイルの内容をディスクからクライアントにエコーする前に、いくつかの権限をチェックします。iPad を使用しても、他の手段でファイルにアクセスしても、この問題を再現することはできませんでした。

サーバーがダウンしたときに何が起こっているかをより正確に把握するために、いくつかの監視ソリューションを試しましたが、いずれもシステム リソースに問題があるようには見えませんでした。

私の質問は、この問題のトラブルシューティングを試み、解決するために使用できる戦略は何ですか?

答え1

まず、collectd や sysstat を使用して、システム リソース (CPU 負荷、メモリ、ディスク) を監視します。

ここで私が危険を冒していることに留意してください。あなたが説明している問題は、リソース (おそらくメモリ) の枯渇によって発生している可能性があります。OOMegrep -i 'killed process' /var/log/*キラー呼び出しを探してください。

システム ログに原因の痕跡が含まれている可能性があります ( /var/log/messages、Apache のエラー ログ)。

より詳細なログを有効にして、テスト中にシステムに細心の注意を払ってください。

関連情報