以下は prefork のデフォルト設定セクションです:
StartServers 5 //
MinSpareServers 5 //アイドルプロセスの最小数が設定されます。
MaxSpareServers 10 //アイドル プロセスの最大数を設定します。アイドル プロセスの数がこの値より大きい場合、Apache は一部の冗長プロセスを自動的に強制終了します。この値を大きすぎないように設定してください。ただし、値が MinSpareServers より小さい場合、Apache は自動的に MinSpareServers+1 に調整します。サイトの負荷が重い場合は、MinSpareServers と MaxSpareServers を同時に増やすことを検討してください。
MaxClients 150 // MaxClients は、これらの命令の中で最も重要であり、Apache が同時に処理できるリクエストを設定し、Apache のパフォーマンスに最も大きな影響を与えるパラメータです。デフォルト値の 150 では十分ではありません。リクエストの総数がこの値に達すると (ps -ef|grep http|wc -l で確認できます)、後続のリクエストは処理されたリクエストが完了するまでキューに入れられます。 。これが、システム リソースがたくさん残っているにもかかわらず、HTTP アクセスが非常に遅い主な理由です。システム管理者は、ハードウェア構成と負荷条件に基づいてこの値を動的に調整できます。理論的には、この値が大きいほど処理できるリクエストは多くなりますが、Apache のデフォルト制限は 256 を超えることはできません (2.0 の #define DEFAULT_SERVER_LIMIT 256 から派生)。この値が 256 より大きい値に設定されている場合、Apache は起動しません。実際、負荷が少し重いサイトでは 256 では十分ではありません。 Apache 1.3 では、これはハード制限です。この値を増やしたい場合は、「configure」の前に手動で変更したソース コード ツリーの下の src/include/httpd.h で 256 を検索する必要があります。行「#define HARD_SERVER_LIMIT 256」が見つかります。 256 を増やしたい値 (4000 など) に変更し、Apache を再コンパイルします。 ServerLimit ディレクティブが Apache 2.0 に新たに追加されたため、Apache を再コンパイルせずに MaxClients を増やすことができます。 ServerLimit を使用する場合は、ここに別の行を追加するだけです。 ServerLimit の値がここで定義されている 20000 を超える場合は、server/mpm/prefork/prefork.c #define MAX_SERVER_LIMIT 20000 を変更する必要があります。 20000 をより大きな値に変更します。
MaxRequestsPerChild 0 //各子プロセスが処理できるリクエストの数を設定します。各子プロセスは、「MaxRequestsPerChild」リクエストの処理後に自動的に破棄されます。 0 は無限、つまり子プロセスが決して破棄されないことを意味します。デフォルト設定の 0 では、各子プロセスがより多くのリクエストを処理できますが、ゼロ以外の値に設定すると、2 つの重要な利点もあります。それは、偶発的なメモリ リークを防ぐことができ、サーバーの負荷が減少したときに子プロセスの数を自動的に減らすことができます。 。 番号。
Worker の動作原理は、メイン制御プロセスが「StartServers」サブプロセスを生成し、固定数の ThreadsPerChild スレッドを含み、各スレッドがリクエストを独立して処理することです。同様に、リクエストが届いたときにスレッドを生成しないようにするためです。
各プロセスが持つことができるスレッドの数は固定されています。 サーバーは負荷状況に基づいてプロセス数を増減するように調整します。単一の制御プロセスが子プロセスの確立を担当します。各子プロセスは、ThreadsPerChild で指定された固定数のスレッドを作成できます。 次に、別のスレッドが受信接続をリッスンして処理します。
Apache は常に、スペアまたはアイドル状態のサービス スレッド プールを維持しようとします。 このように、クライアントは、スレッドまたはプロセスが処理される前に、スレッドまたはプロセスが確立されるのを待つ必要がありません。 最初に作成されるプロセスの数は、StartServers ディレクティブによって決まります。 その後、Apache はすべてのプロセスのアイドル状態のスレッドの合計数を検出し、合計数が MinSpareThreads と MaxSpareThreads で指定された範囲内に収まるようにプロセスを作成または終了します。 このプロセスは自己調整であるため、これらの命令のデフォルト値を変更する必要はほとんどありません。 同時に処理できるクライアントの最大数は MaxClients ディレクティブに依存し、確立されるプロセスの最大数は ServerLimit ディレクティブに依存します。 ServerLimit に ThreadsPerChild を乗算した値は、MaxClients 以上である必要があります。
上記は Apache パフォーマンスの最適化 (4) の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。