目次
preforkのチューニング
サンプル
標準の値
<IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule>
チューニングサンプル(その1)
<IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 30 ServerLimit 300 MaxClients 300 MaxRequestsPerChild 50 </IfModule>
チューニングサンプル(その2)
<IfModule prefork.c> ServerLimit 340 MaxClients 340 StartServers 15 MinSpareServers 5 MaxSpareServers 10 MaxRequestsPerChild 10000 </IfModule>
各々設定の内容
StartServers
http://httpd.apache.org/docs/2.2/ja/mod/mpm_common.html#startservers
Apache起動時のサーバプロセスの数。MinSpareServers と同一の値を設定する。
MinSpareServers/MaxSpareServersの値に応じて動的に調整されるため、デフォルトの5~10の値で十分です。
StartServersの値を増やすと、Apacheの起動時間が長くなりサービスのダウンタイムが大きくなります。
MaxSpareServers
http://httpd.apache.org/docs/2.2/ja/mod/prefork.html#maxspareservers
待機させておくhttpdの最大数。Apacheは定期的に監視してこの値を上回っていた場合は自動的にhttpdを停止する。
過度な待機プロセスが発生しないように、MinSpareServers < MaxSpareServers。
MaxClientsの値まで上げることもできますが、待機プロセスで無駄にサーバのリソースを浪費する可能性もある。
MaxClients
http://httpd.apache.org/docs/2.2/ja/mod/mpm_common.html#maxclients
MaxClients * Apacheの1プロセスが使用するメモリ < 使用可能なメモリ
使用可能なメモリを計算するのは複雑なので、OSメモリの90%位を目安にしてます。
ServerLimitより大きな値を設定することはできません。
値を上げる際は併せてServerLimitも変更する必要があります。
ServerLimit
http://httpd.apache.org/docs/2.2/ja/mod/mpm_common.html#serverlimit
デフォルトのままコンパイルしたApache 2.2.xではServerLimitの上限は20000です。
MaxClients を 256 (デフォルト) よりも大きな値に設定する必要がある時にだけ使用してください。
希望の MaxClients 数とくらべて、必要以上に大きな値を指定することは避けてください。
MaxRequestsPerChild
http://httpd.apache.org/docs/2.2/ja/mod/mpm_common.html#maxrequestsperchild
使い回しているプロセスを定期的に再起動させる値を設定する。
指定が「0」の場合は無制限を意味し、プロセスの再起動は行われません。
プロセスを再起動させることで、メモリリークを防いだり、コンテンツの不具合が改善されることがあります。
なるべく「5000」や「6000」といった大きな値を設定します。
が、プロセスの再起動に引っ張られてサーバのパフォーマンスやクライアントへのレスポンスが低下することもあるので、不用意に値を設定しないほうがよいです。