c0d3man52

Webサイト制作

[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秒あたりの処理回数)」で比較しています。

テスト結果

プレーンなCodeIgniterCodeIgniter on KUSANAGICodeIgniter 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''*171.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マシンだともっと速度が出るかもしれないので、別の機会でトライしてみようと思います。