カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

ウェブサーバの負荷を下げてみる

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」がいいよーってことです。

ただ、コネクション数が増えそうで、他のミドルウェアとかに影響与えないか、いまんとこそこら辺が不安なう。
と言う感じで、様子を見てる日々でございます。