[PHP] CodeIgniterはKUSANAGI Runs on Dockerで速くなるのか?ベンチマークしてみた
WordPressを高速化してくれるKUSANAGIですが、WordPress以外でもPHPプログラムなら高速化が可能という話を聞いたので、メインで使用しているPHPフレームワーク・CodeIgniterでどれくらいの速度が出るのかをテストしてみました。
更新日: 2018.7.17公開日: 2017.9.4
テスト環境
まずは、テスト環境です。
時間貸ししてくれるConoHa VPSを利用しました。手軽に使えるという点で、最安値の512MBプランにしています。KUSANAGIはDockerコンテナで動かしています。
CodeIgniter on KUSANAGIのほうは、本来なら、「kusanagi provision」でLEMPを環境用意してテストしたいところですが、Docker用のKUSANAGIではKUSANAGIコマンドに一部不具合があるので、今回は使っていません。(そもそも、KUSANAGI Runs on Dockerの公式サイトでは、KUSANAGIコマンドは使えないとなっています)
今回は、一度WordPress環境ができあがったあとに、DocumentRootの中身をCodeIgniterに書き換えてテストしました。
テスト方法
apache benchを使います。
ab -n 100 -c 10 https://hogehoge.com/
1ユーザーあたり10アクセスという条件で、10人、100人、500人と増やしていきます。CodeIgniter on KUSANAGIのほうは、bcacheのオン・オフそれぞれでテストをしました。
数字はいずれも「Requests per second(1秒あたりの処理回数)」で比較しています。
テスト結果
プレーンなCodeIgniter | CodeIgniter on KUSANAGI | CodeIgniter on KUSANAGI(bcache on) | |
---|---|---|---|
10人 | 47.28 '#/sec' | 71.89 '#/sec' | 74.07 '#/sec' |
100人 | 44.32 '#/sec' | 74.40 '#/sec' | 72.74 '#/sec' |
500人 | 44.34 '#/sec''*1 | 71.57 '#/sec' | 71.37 '#/sec' |
中身空っぽのページなんであれなんですが、KUSANAGIのほうが全般的に速度が出ました。
他のサイトでは、KUSANAGIをLEMPモードで動かすと、PHPフレームワークが10倍速くなったなんてベンチマークもあったので、「それくらい出るかなぁ。5倍くらいは出て欲しいなぁ」なんて思っていたので、少し残念です。
ただ、今回のテストはKUSANAGIをWordPressモードで動かしているためスピードが出ていないのかもしれません。また、最弱プランのVPSを使っているので単純にCPUのパワー不足の可能性もあります。(たまにSSL handshake failedが出ていたので、プロキシ側の処理限界に要因もありそうな気がします。)
一方、nginxのキャッシュを効かせる「bcache」をオンにしても、あまり効果が出ませんでした。これは、すっぴんのCodeIgniterなのでキャッシュしておくほどのコードがないのが要因かもしれません。
CodeIgniterはPHPフレームワークの中でも高速な部類に入るフレームワークですが、KUSANAGIを利用することでさらに高速化することができました。
今回は、Docker上のKUSANAGI(KUSANAGI Runs on Docker)でのベンチマークでしたが、ひょっとしたらKUSANAGIイメージを使ったプレーンなKUSANAGIマシンだともっと速度が出るかもしれないので、別の機会でトライしてみようと思います。