web-dev-qa-db-ja.com

基本的なApachehttpdサーバーのセットアップは、頻繁な再起動が必要な画像を提供するのに時間がかかります

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>
2
Alex

いくつかの質問:

Apache.confファイルを調整しましたか?どのApacheMPMを使用していますか?
Apache.confファイルで現在設定されているパラメーター:

Timeout
KeepAlive
MaxKeepAliveRequests
KeepAliveTimeout
MinSpareServers
MaxSpareServers
StartServers
MaxClients
MaxRequestsPerChild
1
George P

診断の提案:

  1. CPUとメモリを確認しましたが、ディスクの帯域幅やその他の統計も確認することをお勧めします(dstat -afをお勧めします)。大量のディスクの読み取りまたは書き込み、多数のコンテキストスイッチまたは割り込み、サーバーの起動と問題が発生したときのサーバーの動作の間で大きく異なるその他の測定値などを探しています。

  2. チェックするもう1つのことは、動作が時間の経過の関数なのか、リクエストの数なのか、あるいはその両方なのかを把握することです。

    • サーバーを起動し、数時間画像をリクエストしないでから、画像をリクエストしますか、リクエストは速いですか、それとも?
    • サーバーを起動し、できるだけ速く画像を要求し(ループバックを使用してネットワークの遅延を回避します)、特定の所定のレベルの速度低下に達するまでにかかる時間を確認します(たとえば、10秒の応答)
  3. それがネットワークの問題であるかどうかを確認するためにテストします。サーバーに問題がある場合(10秒の応答など)、ループバックインターフェイスを介して画像をリクエストします。早く戻る場合は、ネットワークを調べてください。遅い場合は、ホスト外のネットワークの問題を無視できます。

1
Slartibartfast

mod_status を使用して、サーバーのステータスを確認および監視します。ほとんどの接続はKeepAliveステータスで待機していると思います。これをオフにするか、KeepAliveTimeout4のように低い値に下げることができます。

1
sw0x2A