WebサーバーのCPU数
僕が今年担当したWebサーバー構築案件のうち2件で、アクセス急増によりCPU負荷が上がりすぎて、Webページの表示が極端に遅くなる現象が発生しました。
サーバーはどちらもAWS EC2 m4インスタンスで、Nginx + PHP-FPMの構成、DBはRDS for MySQL。
1件はCakePHPを使用したWebサイト、もう1件はEC-CUBEによるECサイトです。
サーバーの負荷を見てみると、PHP-FPMのプロセス数が1CPUあたり15を超えるとCPU使用率が80%を超え、1CPUあたり20を超えると100%に張り付くぐらいの感じです。
サーバー全体の使用メモリは搭載メモリの半分以下でした。
このとことから、Nginx + PHP-FPMの場合は、WebサーバーのCPU数を重視したほうがよいです。
AWS EC2であれば、1CPUあたりメモリ4GBのm4シリーズよりは、1CPUあたりメモリ2GBのc4シリーズが適切です。
今回の2件ともm4からc4への変更(=メモリはほぼそのままでCPU数を2倍にする)で対処し、CPU負荷が落ち着きました。
※Apache + PHP-FPMでも同じかもしれません。Apache + mod_phpはプロセス数が多くなるので、メモリを多く使いそうなイメージがあります。
2回失敗してしまったので、次は失敗しないように。