ドノーマルなWordPress環境とKUSANAGIのベンチ比較をさくらのクラウドでやってみた


みなさんこんにちは、プライム・ストラテジー ゆで太郎エバンジェリスト @nullpopopo です。本日は「さくらインターネット Advent Calendar 2016」のネタとして、さくらのクラウドに片方はドノーマルなWordPress、もう片方はKUSANAGI上でWordPressを構築してベンチマークを取ってみました。後述しますが、勿論公平を期すため、どちらも同じサイズのサーバーでございます。

■ 自己紹介

本ブログやTwitterでお馴染みな方もいらっしゃるかと思いますが、今年7月よりプライム・ストラテジー株式会社で、クラウドエンジニアとして、お客様のWordPress環境をKUSANAGI環境へ移行したり、時にはプリセールスエンジニアとしてインフラのディレクションをしたり、広報活動や社内インフラも担当したりしています。今年9月中旬まで、弊社は神田橋近くの雑居ビルにおりましたが(ゆえに #弊社5Fなどのハッシュタグをつけてました)、大手町ファーストスクエア イーストタワー18Fへ移転しました。その際、同僚の御影さんと一緒にネットワークの構築や社内サーバーの移設もやりました。

■ KUSANAGIとは

プライム・ストラテジー株式会社が開発・構成する、WordPressを高速に動作させるための仮想マシンおよびそのイメージです。さくらのクラウドやさくらのVPSをはじめ、主要クラウドベンダーで利用できますし、KUSANAGIそのものは無料(クラウド利用料金のみ)でお使いいただけます。

■ 環境構築

いやー、久々に素っぴんのCentOS7にnginxとphp-fpm、MySQLをインストールしました。KUSANAGIですと、後述するコマンドを4つ叩くだけですので、普段いかに楽々構築しているのか思い知らされましたw

非KUSANAGI環境、KUSANAGI環境とも、サーバーのスペックは以下の通りです。

[nullpopopo@normal-wp ~]$ cat /proc/cpuinfo  | egrep ^processor | wc -l ; cat /proc/meminfo | egrep ^MemTotal
2
MemTotal:        2048952 kB
[kusanagi@kusanagi-marina ~]$ cat /proc/cpuinfo  | egrep ^processor | wc -l ; cat /proc/meminfo | egrep ^MemTotal
2
MemTotal:        2048952 kB

どちらもCPU2コア、メモリ2GBです。

非KUSANAGI環境のほうでの構築手順は割愛しますが、WEBサーバーはnginxです。

[nullpopopo@normal-wp ~]$ sudo lsof -i:80
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1091  root    8u  IPv4  15085      0t0  TCP *:http (LISTEN)
nginx   1093 nginx    8u  IPv4  15085      0t0  TCP *:http (LISTEN)
nginx   1094 nginx    8u  IPv4  15085      0t0  TCP *:http (LISTEN)

PHPはソケットでListenしています。

KUSANAGI環境での構築手順は次の4コマンドです。

yum --enablerepo=remi,remi-php56 update -y
systemctl reboot
kusanagi init --tz tokyo --lang ja --keyboard ja --passwd P@sSw0rD --nophrase --dbrootpass P@sSw0rD --nginx --php7
kusanagi provision --WordPress --wplang ja --fqdn 153.120.xxx.xxx --noemail --dbname wp_database --dbuser dbuser --dbpass P@sSw0rD 153.120.xxx.xxx

yumコマンドで各種パッケージをアップデートして再起動したのち、kusanagi initコマンドでnginx+php7環境を作り、kusanagi provisionコマンドでWordPressのバーチャルホスト環境をプロビジョニングしています。

こうして出来上がった環境のWordPressはこんな感じです。

■ ベンチマークテスト実行

それでは早速abコマンドでベンチマークとってみましょう。最初は同時接続数100を100リクエスト投げることにします。

[非KUSANAGI環境]

sh-4.2$ ab -n 100 -c 100 http://133.242.xxx.xxx/ | egrep "^(Requests per second|Time per request|Failed requests)"
Failed requests:        0
Requests per second:    37.19 [#/sec] (mean)
Time per request:       2688.537 [ms] (mean)
Time per request:       26.885 [ms] (mean, across all concurrent requests)

 

[KUSANAGI環境]

sh-4.2$ ab -n 100 -c 100 http://153.120.xxx.xxx/ | egrep "^(Requests per second|Time per request|Failed requests)"
Failed requests:        0
Requests per second:    66.26 [#/sec] (mean)
Time per request:       1509.317 [ms] (mean)
Time per request:       15.093 [ms] (mean, across all concurrent requests)

Requests per secondほぼ倍近くなっています。次に同時接続数500を500リクエスト投げてみましょう。

[非KUSANAGI環境]

sh-4.2$ ab -n 500 -c 500 http://133.242.xxx.xxx/ | egrep "^(Requests per second|Time per request|Failed requests)"
Failed requests:        166
Requests per second:    96.84 [#/sec] (mean)
Time per request:       5163.413 [ms] (mean)
Time per request:       10.327 [ms] (mean, across all concurrent requests)

 

[KUSANAGI環境]

sh-4.2$ ab -n 500 -c 500 http://153.120.xxx.xxx/ | egrep "^(Requests per second|Time per request|Failed requests)"
Failed requests:        0
Requests per second:    54.42 [#/sec] (mean)
Time per request:       9187.560 [ms] (mean)
Time per request:       18.375 [ms] (mean, across all concurrent requests)

KUSANAGI環境が余裕で捌いているのに対し、非KUSANAGI環境ではFailed requestsの数字が増えてしまいました。

本当でしたら複数回ベンチを取ったりするなどするべきなのでしょうけれども、ざっくり比較して同じサーバースペックでもKUSANAGIのほうが高速であることがおわかりいただけたかと思います。つまりこれ、サーバーが持っているパフォーマンスをより引き出していることになるんですよね。

明日は tar_xzvf さんです!よろしくお願いいたします!