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

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


最終更新 : 2018年05月27日 10:43

お勧め

get_cat_name(2018年5月27日 更新)

string get_cat_name( int $cat_id )
カテゴリーIDからカテゴリー名を取得する。

wp_kses_no_null(2012年4月25日 更新)

string wp_kses_no_null( string $string )
文字列からNULL文字を取り除く。

__(2018年5月27日 更新)

string __( string $text [ , string $domain = 'default' ] )
現在のロケールに応じた翻訳テキストを取得する。

username_exists(2018年5月27日 更新)

mixed username_exists( string $username )
ユーザ名が登録されているか確認する。

get_approved_comments(2011年6月19日 更新)

array get_approved_comments( int $post_id )
投稿記事の公開許諾されているコメント情報を取得する。