====== preforkのチューニング ======
===== サンプル =====
==== 標準の値 ====
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
==== チューニングサンプル(その1) ====
StartServers 8
MinSpareServers 5
MaxSpareServers 30
ServerLimit 300
MaxClients 300
MaxRequestsPerChild 50
==== チューニングサンプル(その2) ====
ServerLimit 340
MaxClients 340
StartServers 15
MinSpareServers 5
MaxSpareServers 10
MaxRequestsPerChild 10000
===== 各々設定の内容 =====
==== 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」といった大きな値を設定します。
が、プロセスの再起動に引っ張られてサーバのパフォーマンスやクライアントへのレスポンスが低下することもあるので、不用意に値を設定しないほうがよいです。