この記事は最後に更新してから1年以上経過しています。
説明
今回は「前回」の続き。さくらのVPS(メモリー2GB SSDプラン)でパフォーマンスをApacheのabコマンドで確認してみた。はてさて、うたい文句通りのパフォーマンスは発揮するのだろうか。
KUSANAGIの環境確認と変更方法
KUSANAGIの環境は「status」パラメータで確認できる。
# kusanagi status
Profile: html
Type: WordPress
KUSANAGI Version 8.0.6-2
sakura
*** nginx ***
● nginx.service - The NGINX HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since 火 2017-05-16 17:24:34 JST; 3s ago
*** Apache2 ***
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
*** HHVM ***
● hhvm.service - HHVM virtual machine, runtime, and JIT for the PHP language
Loaded: loaded (/etc/systemd/system/hhvm.service; enabled; vendor preset: disabled)
Active: active (running) since 火 2017-05-16 16:21:04 JST; 1h 3min ago
*** php-fpm ***
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: inactive (dead)
*** php7-fpm ***
● php7-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php7-fpm.service; disabled; vendor preset: disabled)
Active: inactive (dead)
*** Cache Status ***
fcache on
bcache off
完了しました。
この状態は、Webサーバーが「NGINX」、PHP環境は「HHVM(fcache on)」となる。この設定内容はkusanagiコマンドでいつでも切り替えできるようになっている。WebサーバーをApache 2.4に切り替える場合は次のコマンドを実行する。
# kusanagi httpd
WebサーバーをNGINXに切り替える場合は次のコマンドを実行する。
# kusanagi nginx
PHP環境をPHP7に切り替える場合は次のコマンドを実行する。
# kusanagi php7
PHP環境をHHVMに切り替える場合は次のコマンドを実行する。
# kusanagi hhvm
PHP環境のHHVMをキャッシュを有効にする場合は次のコマンドを実行する。
# kusanagi fcache on
PHP環境のHHVMをキャッシュを無効にする場合は次のコマンドを実行する。
# kusanagi fcache off
といった感じである。kusanagiコマンドにはほかにも機能があり、それらは「-h」パラメータで確認できる。
abコマンドを使ってみる
KUSANAGIの環境が簡単に切り替えできることがわかったところで、Apacheのabコマンドを使ってパフォーマンスを見ていく。abコマンドの設定はいくつかあるが、ここは「KUSANAGIについて」に合わせてみた。なおWordPressのページキャッシュプラグインは未使用とする。
# ab -n 10000 -c 300 https:/指定したドメイン名/
実際に実行した結果の抜粋は次の通りとなる。
Server Software: nginx
Server Hostname: 指定したドメイン
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
TLS Server Name: 指定したドメイン
Document Path: /
Document Length: 51840 bytes
Concurrency Level: 300
Time taken for tests: 11.444 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 521240000 bytes
HTML transferred: 518400000 bytes
Requests per second: 873.84 [#/sec] (mean)
Time per request: 343.314 [ms] (mean)
Time per request: 1.144 [ms] (mean, across all concurrent requests)
Transfer rate: 44480.28 [Kbytes/sec] received
サイトトップページのドキュメントサイズが異なるため単純には比較できないが、KUSANAGIの紹介ページの数値との差はわずかで、かなり高速なことがわかる。
これを踏まえ、各環境で上記のabコマンドを各10回実行し、「Time taken for tests」の違いを比較してみた。
Web環境 | 最短[秒] | 最長[秒] | 上下カット平均[秒] |
---|---|---|---|
NGINX+HHVM(fcache on) | 9.592 | 12.778 | 11.202 |
NGINX+HHVM(fcache off) | 68.985 | 77.970 | 72.858 |
NGINX+PHP7(php7-fpm) | 10.080 | 12.664 | 11.220 |
Apache+HHVM(fcache on) | 67.706 | 76.612 | 73.982 |
Apache+PHP7(php7-fpm) | 72.222 | 79.909 | 77.894 |
※「Apache+HHVM(fcache off)」については「NGINX+HHVM(fcache off)」の結果を踏まえて省略。
今回パフォーマンスを検証する前の個人的な感覚としては、「HHVM(fcache on)」がダントツに速いのでは予想していた。しかし、ご覧の通りWebサーバー「NGINX」との組み合わせでは「PHP7(php7-fpm)」との差はほとんどないことに驚く。「Apache」の場合は数値上は明確に違っており、その原因が気になるところだ。また、「HHVM」についてキャッシュの有無による結果の違いは歴然としており、「HHVM」を選択するならばキャッシュを有効にして使用するのが現実的だろう。この結果を踏まえると、実運用で「HHVM(fcache on)」と「PHP7(php7-fpm)」のどちらを採用すべきか悩ましい感じだ。
とりあえずは残作業を整理して、そのあとで考えることにしよう(続く?)。
最終更新 : 2018年05月27日 10:43
お勧め
delete_post_meta(2018年5月27日 更新)
wp_is_numeric_array(2018年5月27日 更新)
get_tag_regex(2013年8月3日 更新)
get_all_page_ids(2012年5月30日 更新)
the_post_thumbnail_caption(2018年5月27日 更新)