私のサイトは、日中の 2 時間、大量のトラフィックを受信します (1 分あたり 2000 ヒット)。残りの時間はトラフィックが少なくなります (1 分あたり 500e ヒット)。MaxClients と MaxSpareServers の値を試していますが、ピーク時にはダウンタイムが発生します。

所有している RAM の量に基づいて、構成に最適な値を計算するにはどうすればよいでしょうか?

各プロセスは36~40MBのメモリを必要とする

             total       used       free     shared    buffers     cached
Mem:          3096        793       2302          0          0          0
-/+ buffers/cache:        793       2302
Swap:  

      0          0          0

私が今使っている価値観

<IfModule prefork.c>
StartServers 10
MinSpareServers 22
MaxSpareServers 60
ServerLimit 90
MaxClients 90
MaxRequestsPerChild  400

更新: ホスティング プロバイダーからこれを見つけました。

http://kb.mediatemple.net/questions/246/(dv)+HOWTO:+基本的なApacheパフォーマンスチューニング+(httpd)

私はエクストリーム パッケージを使用しており、MaxClients に 200 ではなく 190 を使用しました。半夜試してみたところ、malloc エラー コマンド ライン メッセージが表示されましたが、free コマンドを使用して、free 列に 800 M 程度取得しました。

答え1

サーバーがピークに悩まされている場合、Apacheはプロセスとスレッドの作成を非常にゆっくりと処理するため、同じことが起こります(mpm_preforkモードでは1秒あたり1つの新しいサブプロセスです)。「高トラフィック」のニーズがわかっている場合(200プロセスとしましょう)、Apacheに次のことを伝えます。いつもこれらの 200 のプロセスは、たとえ 90% の時間は何もしていなくても、準備完了です。人が来たときには準備完了です。

この便利なプレゼンテーションをご覧ください(古いですがクールです) http://www.techpresentations.org/Hacking_Apache_HTTP_Server_at_Yahoo

StartServers、MaxSpareServers、MinSpareServers は必要ありません - MaxClients (一定のプール サイズ) のみが必要です

答え2

答えは、提供しているコンテンツの種類によって大きく異なります。動的コンテンツですか、静的コンテンツですか? 幅広いコンテンツですか、それとも単一のドキュメントですか?

使用できますメモリキャッシュドキュメントをメモリに保存すると、大幅な拡張が可能になります (ディスクのボトルネックが解消されます)。ただし、これは RAM の容量とコンテンツが大幅に変更されるかどうかによって決まります。

答え3

サーバーのハードウェア (特にメモリ) と実行しているサイトの効率に応じてテストする必要があります。ダウンタイムが発生すると何が起こりますか? 設定した制限に達していますか? メモリが不足していますか?

答え4

メモリが厳しく制限されている状況 (VPS) の場合は、スワップの死を防ぐためにデフォルトの maxclients を下げる必要がある場合があります。

そうでない場合は、触らないでください

Apache の子プロセスの調整は、カーネルのカスタム コンパイルのような作業の 1 つで、メリットよりもデメリットの方が圧倒的に多くなります。メリットがまったくなく午後を無駄にすることであってもです。Apache の httpd プロジェクト担当者は、自分たちの仕事にかなり長けていることがわかりました。誰がそんなことを想像したでしょうか。

関連情報