RHEL5.3で実行されているApachehttpdサーバーがあります。このサーバーを使用して、別のhttpdインスタンスで実行されているWebサイトの静的コンテンツ(画像)を提供しています。公開ウェブディレクトリにはいくつかの画像があり、それだけです。起動後しばらくすると、サーバーはブラウザに画像を提供するのに非常に遅くなり、16x16pngを提供しようとしているときに数分間ハングすることがよくあります。
この問題をデバッグするための最良の方法は何ですか?
ボックスでtopを実行して、十分な空きメモリと使用可能なCPUがあることを確認しました。マシンはスワップに移行せず、httpdプロセスは、ブラウザを介して画像が要求されたときに、CPUとメモリを数秒間しか使用しません。ただし、画像は数分後にしか返されません。
Httpdプロセスを再起動すると問題が解決し、画像がすぐに読み込まれます。
これは、可能な限り最も簡単なWebサーバーのセットアップのようです。問題は何でしょうか?
ありがとう
[〜#〜] update [〜#〜]:httpd.conf設定:
Timeout 10
KeepAlive On
MaxKeepAliveRequests 150
KeepAliveTimeout 15
ServerLimit 3
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
いくつかの質問:
Apache.confファイルを調整しましたか?どのApacheMPMを使用していますか?
Apache.confファイルで現在設定されているパラメーター:
Timeout
KeepAlive
MaxKeepAliveRequests
KeepAliveTimeout
MinSpareServers
MaxSpareServers
StartServers
MaxClients
MaxRequestsPerChild
診断の提案:
CPUとメモリを確認しましたが、ディスクの帯域幅やその他の統計も確認することをお勧めします(dstat -afをお勧めします)。大量のディスクの読み取りまたは書き込み、多数のコンテキストスイッチまたは割り込み、サーバーの起動と問題が発生したときのサーバーの動作の間で大きく異なるその他の測定値などを探しています。
チェックするもう1つのことは、動作が時間の経過の関数なのか、リクエストの数なのか、あるいはその両方なのかを把握することです。
それがネットワークの問題であるかどうかを確認するためにテストします。サーバーに問題がある場合(10秒の応答など)、ループバックインターフェイスを介して画像をリクエストします。早く戻る場合は、ネットワークを調べてください。遅い場合は、ホスト外のネットワークの問題を無視できます。
mod_status を使用して、サーバーのステータスを確認および監視します。ほとんどの接続はKeepAliveステータスで待機していると思います。これをオフにするか、KeepAliveTimeout4のように低い値に下げることができます。