ウェブサーバの負荷を下げてみる
apacheぐらいチューニングの対象として好きなものはないのかもしれないけど、やった分だけ効果が出るものだと思うから、記録にも残しておく。
keepalive理解してますか
わたくし自身、keepaliveというのは、効果的なコネクションの有効活用だと思い、ずっとONにして稼働させてました。どんなサイトでも。
でも、keepaliveはサイトの性質というか、提供するコンテンツによってONにしたり、OFFにすべきだということをやっとわかったかもーという状態になっております。
というのも、画像とかjavascriptとかが一回のレスポンスであまり渡さないときには、keepaliveは「OFF」にすべきで、たとえ、5秒間有効にするような設定であっても、
すごーく無駄なコネクションが生じます。
どういうことかというと、
- keepaliveをON
- たいした数をクライアントに送らないのに、5秒ぐらい生き残ってる
- psとかnetstatでapacheの状態見ても、なんかめちゃ処理してそう OR 処理頑張ったねおつかれさま状態
- ピークになるにしたがって、めちゃプロセス数あがっていくよ
- メモリくいつくしそうだなぁ。制限かけてるから落ちないだろうけど、頑張ってるねぇ
という理解をしてました。
でも、ちょっとしたなりゆきで、「OFF」にしてみました。
そしたら、
- すぐコネクション切るから、apacheのプロセスがすげー減った
- ピーク時でも頑張って動いてるやつしか存在しない
- とにかく精一杯なやつしか、いない
ということになり、スレッド数に余裕ができて、安心しました。
server-statusを追っても、CPUの占有率が素敵な感じであがってくれたので、今までほんとさぼってたやつが多かったんだなーと痛感という日々でした。
まとめ
ということで、あんま画像とかスクリプトを一回のリクエストで返さない場合は、keepaliveは「OFF」がいいよーってことです。
ただ、コネクション数が増えそうで、他のミドルウェアとかに影響与えないか、いまんとこそこら辺が不安なう。
と言う感じで、様子を見てる日々でございます。