Apacheのチューニングでこんなページを教えてもらったのですが
微妙に違うような気がするのでメモ(解釈の違いかも)
注意が必要なのは、リクエストを処理しているプロセスは待機プロセスと呼ばない点である。
つまり、最大時にはMaxClientsとMaxSpareServersを足した数のプロセスが起動するということだ。
MaxSpareServersはあくまでも待機プロセスだと記憶してたので
こんな設定を試してみました
<IfModule prefork.c> StartServers 8 MinSpareServers 20 MaxSpareServers 20 MaxClients 30 ServerLimit 30 MaxRequestsPerChild 4000 </IfModule>
起動時8プロセスでとりあえず20まであがる
負荷時は最大30(+親プロセス1)といった感じです
ABで多重度40で試してみたところ想定どおり31のプロセス数でした
最大時というのが曲者で
おそらく筆者はMaxClientsが十分ある環境の下で負荷+MaxSpareServersの
プロセスがあがるといいたかったのではないかと思うのですが
さっくり読んでしまうとMaxClients+MaxSpareServersが最大あがるプロセス数と勘違いしてしまうかも知れないので・・・
ちなみに聞いた話だとプロセスがあがるのはまだ無視できるけど
プロセスが死ぬときの負荷は無視できないということを聞きましたので
MinSpareServersとMaxSpareServersの値は同じにして
ピークのプロセス数あたりに合わせるといいかもしれません(未検証)
あ、自分の勘違いだったら指摘していただけるとありがたいです
参考サイト
Apache MPM prefork
Apache MPM 共通ディレクティブ