apache(prefork)のチューニングについて
むかーしからapacheのチューニングは頑張りたいなぁと思いつつ、ざっくり調べて、ざっくり放置した結果、結局何も理解できていないという時代があったので、ちょいと書いてみる。
昔動かしてたサーバで設定していた値
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 80
MaxRequestsPerChild 0
実際、MinとかMaxとかあっても分からないわけです。とりあえず、最小で5ぐらい、最大で80とかしとけばよいんじゃねとか適当に考えて設定しても、ぶっちゃけ全然チューニングになってない。そもそもMin, Maxって何が最小・最大なのって感じだし、とりあえずabでベンチしてみたらなんか良さそうだからみたいな適当な理由しかない。
それで、やばい!!、同時接続が増えたから、MaxClientsをあげようと思って、その値を2000とか4000とかにしてみたりする。
そんなもんだから、いざロードアベレージが10,50,100,1000となっていってうぎゃーというときには手遅れだったりします。
今だったら思えること。
- 無闇にプロセス数が変わるようなことはしない
- ピーク時に、プロセスを作ったり殺すことは厳禁
- 最初からフル稼働でよいじゃない
ってことだと思っている。
個人的には全て同じ値にしておいて、余裕をもたせておくのが素敵だと思ってる。
んで、それでもサーバが悲鳴あげてるようなら、スケールアウトしましょうよって言えるし、今のままじゃ厳しいっすよぉってわめける。
そんなわけで、値を変えましょうという話し。
実際は、
StartServers 100
MinSpareServers 100
MaxSpareServers 100
MaxClients 100
MaxRequestsPerChild 500
とかにするんだけど、どうやってその値を判断するかは次回ということで。
こんな感じでブログ書いていこうかな。