さくらのVPSでKUSANAGI#2

さくらのVPSでKUSANAGI#2 - コマンドでWeb環境を簡単に切り換えできる

説明

今回は「前回」の続き。さくらの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.59212.77811.202
NGINX+HHVM(fcache off)68.98577.97072.858
NGINX+PHP7(php7-fpm)10.08012.66411.220
Apache+HHVM(fcache on)67.70676.61273.982
Apache+PHP7(php7-fpm)72.22279.90977.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)」のどちらを採用すべきか悩ましい感じだ。

とりあえずは残作業を整理して、そのあとで考えることにしよう(続く?)。

お勧めコンテンツ

get_pages(2012年3月13日 登録)

array get_pages( [ mixed $args = '' ] )
固定ページを取得する。

the_excerpt_rss(2011年7月21日 登録)

void the_excerpt_rss( )
RSSフィード用の抜粋記事を出力する。

wp_get_raw_referer(2016年4月22日 登録)

mixed wp_get_raw_referer( )
バリデーションしていないリファラーを取得する。

get_tag_link(2011年5月27日 登録)

string get_tag_link( mixed $tag )
投稿タグのリンク文字列を取得する。

get_previous_comments_link(2015年12月16日 登録)

string get_get_previous_comments_link( [ string $label = '' ] )
前のコメントリンクを取得する。

最終更新日時 : 2017-05-16 18:53