目次

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」といった大きな値を設定します。
が、プロセスの再起動に引っ張られてサーバのパフォーマンスやクライアントへのレスポンスが低下することもあるので、不用意に値を設定しないほうがよいです。