私のApache2.2(プリフォームMPM)は、MaxClientsに到達するとハングし、子プロセスが解放されたときにリクエストをキューに入れて処理するのではありません。これが発生すると、Webサーバーは、手動で再起動するまで完全に応答しなくなります。
サーバースタックはUbuntu8、MySQL 5、PHP 5.ハードウェアは2GBのRAMを搭載したDualXeons(2.8)です。1日あたり30,000〜50,000ページビューを提供します。静止画像、CSS、およびJSは別のサーバーにオフロードされ、PHPはeAcceleratorを使用してキャッシュされます。多くのページのHTML出力は、ファイルシステムにキャッシュされます。
関連するApacheディレクティブ:
KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 2
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 2000
</ code>
サーバーがスワップしているようです。 Apacheプロセスに16MBを使用すると仮定すると、サーバーの容量(2GB)を超えて150 x 16MB = 2400 MB
Apacheで使用されているメモリを確認してください。MaxClientsの値を減らす必要があると思います。
これについての詳細は、Apache Performance Tuningの ハードウェアとOSの問題のセクション にあります。
タイムアウト変数は何に設定されていますか?
設定していない場合は、プッシュダウンすることをお勧めします。
Timeout 30
HDが言っているように、MaxClientsをドロップダウンするか、RAMを増やして、スワップにヒットしないようにすることをお勧めします。
MaxClientsを計算し、デフォルト値ではなくそれに基づいて値を設定します。
最大クライアントの計算
まず、トラフィックが多いときにApacheの子の平均メモリを計算します。
それをApacheに割り当てたいメモリで分割します。
あなたの場合、ウェブサーバーに1 GBのRAMを割り当て、平均プロセスメモリ使用量が16 mbの場合、1000 MB/16 = 62
これは、指定する必要があるmax_client値です。
また、ワーカーではなくプリフォーク用に構成していることを確認してください
私が間違っていない場合、これらはpreforkの変数です-
MinSpareServers
MaxSpareServers MaxClients MaxRequestsPerChild
同じマシンでmysqlとApacheを実行しているため、さらにRAMを追加する必要があります。そうしないと、メモリが不足してスワッピングが開始されます。これにより、さらに速度が低下します。