前回、apacheのMaxRequestsPerChildを検証してみたというタイトルで、MaxRequestsPerChildを軽く試してみました。
他にもいくつかパラメータがありましたので、それらの意味をメモっておきます。
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 5
ServerLimit 5
MaxClients 5
MaxRequestsPerChild 5
</IfModule>
パラメータ | 説明 | 補足 |
---|---|---|
StartServers | 起動時に生成される子サーバプロセスの数 | StartServers ディレクティブは、 起動時に生成される子サーバプロセスの数を設定します。 プロセス数は負荷に応じて動的に制御されますので、 通常はこの値を調整する理由はあまりないでしょう。 |
MinSpareServers | 待機時の最小子プロセス数 | 子プロセスがMinSpareServersより少なくなったら、この値まで子プロセスを上げます |
MaxSpareServers | 待機時の最大子プロセス数 | 子プロセスがMaxSpareServersより大きくなったら、この値まで子プロセスを下げます |
ServerLimit | 設定可能なサーバプロセス数の上限 |
MaxClientsを256以上に設定したい場合はServerLimitも設定する必要があります。また、 MaxClientsの上に書かないと効きません prefork MPM の場合は、このディレクティブは Apache プロセス稼働中における MaxClients に設定可能な上限値を設定することになります |
MaxClients | リクエストに応答するために作成される 子プロセスの最大個数 |
MaxClients ディレクティブは、 応答することのできる同時リクエスト数を設定します。 MaxClients 制限数を越えるコネクションは通常、 ListenBacklog ディレクティブで設定した数までキューに入ります。 他のリクエストの最後まで達して子プロセスが空くと、 次のコネクションに応答します。 スレッドを用いないサーバ (すなわち prefork) では、MaxClients は、リクエストに応答するために起動される 子プロセスの最大数となります。 デフォルト値は 256 で、これを増加させたい場合は、 ServerLimit の値も増加させる必要があります |
※いまの設定値はダミーで設定してます。 またこれらのパラメータの値は揃えた方がいいです。 理由は、forkは重い処理なので、出来るだけforkさせない為です。 とても分かりやすく説明してくれている記事がありましたので、記載しておきます。 プロのサーバ管理者がApacheのStartServers, (Min|Max)SpareServers, MaxClientsを同じにする理由
こう思った
前回はMaxRequestsPerChildを調べましたが、他にもたくさんあったので、調べてみました。 基本はすべての値(RequestsPerChild以外)は揃えるのがベターのようです。 WEBサービスでボトルネックなるのはDBが多いと思うので、apacheのチューニングはあまり無いような気がしてます。 でもチューニングできるとカッコイイと思うので、する機会あればしてみたいと思います。