そもそも今回の検討を始めたのはWordpressを動かす環境の移行の話だったので、以前読んだ記事通り8倍もの性能差が出るのか、実際にWordpressをインストールして性能を比較してみることにしました。
ざっくり下記のような条件でJMeterで負荷をかけて処理時間とエラー数を測定しています。
- dockerはちょうど手元にあったRaspberry pi 4B メモリ2GB。
- PHP-FPMの公式dockerイメージに入っているPHPのバージョンとNGINX Unitのdockerイメージのバージョンを比較するとNGINX側が少し古かったので、PHP-FPMの方は最新では無くNGINX Unitと同じバージョンのイメージを使用。
- WordPressを動かすための最低限の設定しかしておらず、各種パラメータの調整やキャッシュ設定などのチューニングは一切やっていない初期状態。
- 表示させているのはWordpressインストール時に作成されるサンプルページ。
- 負荷はまずウォームアップとして10秒に1回のアクセスを1分間実施。
その後1分間時間を空けた後に本測定として1分間の負荷がけを実施。 - 本測定でのアクセス数は秒間1アクセス、5アクセス、10アクセスの3パターンで実施。
測定結果は下記の通りです。平均値等の単位はミリ秒です。
テストケース | サンプル数 | 平均値 | 中央値 | 最小値 | 最大値 | エラー率 | |
---|---|---|---|---|---|---|---|
秒間1アクセス | PHP-FPM | 60 | 677 | 652 | 645 | 1740 | 0% |
NGINX Unit | 727 | 700 | 694 | 1499 | 0% | ||
秒間5アクセス | PHP-FPM | 300 | 5080 | 4782 | 794 | 9541 | 0% |
NGINX Unit | 48440 | 60011 | 1491 | 60041 | 60.67% | ||
秒間10アクセス | PHP-FPM | 600 | 37229 | 39342 | 1735 | 60021 | 21.17% |
NGINX Unit | 56292 | 60011 | 7866 | 61026 | 85.5% |
正直な話8倍性能が良いどころか悲惨な結果になっています。負荷が低い間は誤差といっていいようなレベルの差しか出ていないようですが、ちょっと負荷が高まってくるとNGINX Unit側が先に限界に達するようで、特に秒間5アクセスでは極端に差が出ていてPHP-FPMではエラー0に対してNGNIX Unit側は60.67%もエラーになってしまっている状態です。
いくら何でもこれは性能が低すぎる気がします。後で同じ負荷をかけながらtopコマンドの出力内容を見ているとMariaDBではなくNGINX Unitが特に重いようでした。何がボトルネックになっているのかはわかりませんが、何か性能を落としている原因がありそうです。
これについてはもうちょっと調査してみようと思います。