さくらのVPSでKUSANAGI#2

説明

今回は「前回」の続き。さくらの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)」のどちらを採用すべきか悩ましい感じだ。

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


最終更新 : 2017年05月16日 18:53

お勧め

get_the_author(2015年12月10日 更新)

string get_the_author( [ string $deprecated = '' ] )
現在の投稿情報の著者名を取得(表示)する。

delete_metadata(2016年2月23日 更新)

bool delete_metadata( string $meta_type, int $object_id, string $meta_key [ , mixed $meta_value = '' [ , bool $delete_all = false ] ] )
メタ情報の値を削除する。

get_home_url(2017年2月25日 更新)

string get_home_url( [ int $blog_id = null [ , string $path = '' [ , string $scheme = null ] ] ] )
任意のブログ(サイト)のホームURLを取得する。ホームURLは、管理者ページの「設定」-「一般」の「サイトのアドレス(URL)」のこと。

remove_theme_support(2011年6月23日 更新)

bool remove_theme_support( string $feature )
自テーマに機能を削除する。

trailingslashit(2011年10月5日 更新)

string trailingslashit( string $string )
末尾にスラッシュ(/)を追加する。