Nginxで2週間ほど『斉藤さん』のサーバーサイドを運用してみて

考察

  • 同時アクセス数が大きくなると(感覚では秒間150〜160前後)後ろが詰まってアクセスを取りこぼすことがある。下のグラフの0時前後(23時ちょうどと0時過ぎくらい)に注目。グラフが途切れている部分はアクセスが集中し、munin-nodeがステータスページへアクセスしても結果がうまくとってこれなくなっている(という個人的な解釈ですが・・・)。

  • Apacheでも同様なことがあったものの、(同スペックのサーバー環境下でも)もうちょっと耐えていたはず*1
  • あと、Apacheの時に比べてアクセスが集中し始めると途端にloadtimeが長くなりがちになることもちょっと気になる。

  • メモリ消費はキャッシュが一定量づつたまっていく。実用上問題はなさそうだが、なんとなく気持ち悪い増え方。
  • PHP-FPMをバカみたいに起動しているせい*2か、メモリのコミット量が半端じゃない。

  • 今後もアクセスが増加していったときに、Apacheであれば原理上はメモリをだんだん増やしていって、コア数も適宜増やしていく・・・みたいなスケールアップ策がとれそうだけど、Nginxは正直どっちを先に増やせばいいのか分からないし、増やしたところで本当に性能が上がるのか未知数*3
  • Webサーバーの設定とAPサーバーの設定*4が分かれていてメンテナンスが結構めんどい。

結論

結論としては「動的な処理にはこの組み合わせはあんまり向いてないんじゃないか???」ということになりました。
というわけで、結局WebサーバーをApacheに戻しました。

ただ、静的なもの(HTMLとか画像ファイル)は適切なキャッシュの設定をすれば爆速ですし、動的なものでも秒間100アクセスレベルくらいならWebサーバー部分のメモリ消費を抑えて、その代わりに(同じサーバーに入れている)MySQL等のメモリ消費量を増やす、という策が取れそうでいいかもしれません。
何だかんだ言って、適材適所ですね。

おまけ

PHP-FPMはこんな感じで推移してました。

『斉藤さん』のウィークリーでのアクセス数のグラフ。
他のサービス同様、平日・祝日共に「18時前後」「0時前後」に大きな山ができています。学生さんの昼休みの時間帯と思われる「(平日)12時〜13時」のあたりにも小さな山ができているのが特徴的です。

*1:その代わりLoad-averageがすごいことになりますが・・・

*2:php-fpm.confの中の「pm.max_children」を450に設定していた。ぶっちゃけどれくらいが適切な値なんでしょう???

*3:調べ方が悪いだけなのかもしれませんが、Apacheに比べるとそういう情報があんまり転がってないっすよね・・・

*4:ここではNginxとPHP-FPMの設定