WordPress4.0(Benny)を使ってみよう!
投稿日:2014/09/18 14:00
目次
WordPressテンプレートがアップデート
本日、ConoHaのWordPressテンプレートがアップデートされました! 9/4にリリースされたばかりのWordPress4.0(Benny)を始め、ソフトウェアが最新バージョンに更新されています。
WordPressテンプレートとは、VPSにOSを再インストールするときのディスクイメージのようなもので、OS以外にWordPress, Nginx, Percona server(MySQL)などのソフトウェアが予めインストールされています。ニーズの多いWordPressを、VPSで簡単に手軽に利用することができます。
今回のアップデートでは、サーバ側のソフトウェアはマイナーアップデートが中心です。また、WordPressも4.0という区切りのいいバージョンとはいえ、あくまでマイナーアップデートという位置づけのようです。
4.0という数字は私たちにとっては単に3.9の後、4.1の前の数字にすぎませんが、少し余分な磨きを入れたような感じもしています。
なので、パフォーマンスが劇的に変わるなどの大幅な変化はありません。しかし、ConoHaのWordPressテンプレートが、手軽に高速なWordPress環境を作るための魅力的な手段であることには変わりありません。
なぜ高速なのか?
実は、ConoHaのWordPressテンプレートは株式会社デジタルキューブ様から提供を受けているもので、非常にパフォーマンスが高いです。デジタルキューブ様といえばご存じ、超高速のWordPressホスティングで名高い会社で、WordPressテンプレートにも、その高速化のノウハウが適用されています。
このエントリでは、WordPressテンプレートがなぜ速いのかを技術的に解説すると共に、実際にConoHa VPS上での簡単なベンチマークをしてみたいと思います。
使ってみよう
ConoHaコントロールパネルの、OS再インストールのプルダウンメニューから選択できます。
WordPressテンプレートをVPSに設定する方法ですが、過去に「薄い本」という冊子を公開していますので、こちらをご覧ください。カラーで導入手順が詳しく書いてあります。
ConoHaの薄い本電子版Vol.1「WordPress」を公開しました!
内部構造を見る
WordPressテンプレートには、ConoHaの標準OS上に以下のソフトウェアがインストールされています。(以下は2014年9月現在です)
- WordPress4.0(Benny) + Nginx Cache Controllerプラグイン
- Nginx1.6.1
- PHP5.5.16(php-fpm)
- Percona Server(MySQL)
- memcached
ポイントとなる部分を解説します。
Nginx + php-fpm + プロクシキャッシュ
最も高速化に寄与している部分です。
WordPressテンプレートでは、Webサーバに高速なNginxを使用し、PHPの処理だけをFastCGI経由でphp-fpmに渡すようになっています。また、このときにphp-fpmからのレスポンスをNginx側でキャッシュするようになっており、一度表示したURLは、Nginxのキャッシュから返答されます。二回目以降のリクエストでは、PHPの処理は全てスキップされ、Nginxで静的ページを表示しているのと同じくらいの表示速度が得られます。
しかし、キャッシュはその管理が煩雑になりがちです。例えば、ブログに新しいエントリが追加された際、ブログのトップページにはその新しいエントリが表示されているべきですが、トップページがキャッシュされていた場合、その新しいエントリが表示されないかもしれません。
これに対処するため、「Nginx Cache Controller」というWordPressプラグインがインストールされています。これはWordPress側で様々な変更(エントリの追加、更新、コメントの追加など)が行われた際に、自動的にキャッシュの削除を行ってくれる便利なプラグインです。キャッシュを削除する範囲なども、細かく調整できます。
ただ、デフォルトではキャッシュの削除が無効になっているので、これを有効にしましょう。
これでキャッシュの削除が有効になります。
Percona Server
データベースについてWordPressテンプレートでは、よく使われるMySQL Community Editionではなく、Percona Serverが採用されています。Percona ServerはPercona社が提供しているMySQLの改良版製品です。その特徴はオフィシャルサイトによると
- SQLクエリの高速な実行と、より強力な一貫性を。
- 強力なハードウェア上で、強固なMySQLサーバを構築できます
- Shardingを行う時期を遅らせるか、完全に不要にできます。
- あなたが使っているホスティングサービスのコストを抑えることができます
- サーバーの管理やチューニングに費やす時間を減らすことができます
- より高い稼働時間を得られます
- トラブル時にも推測で仕事をする必要がありません
これらがPercona Serverのアドバンテージのようです。
(Shardingとは、データベースを複数に分割して、複数のホストなどに分散して配置することです。パフォーマンス向上を目的としていますが、データベースの管理やアプリケーション側の実装が難しくなります。)
一つ前の項で説明したように、Nginxのキャッシュが働くとデータベースにはあまり負荷はかかってこないので、特に閲覧が多い一般的なブログサイトでは、パフォーマンスの面でそこまで効果があるわけではありません。更新の多いサイトでは効果があると思います。
memcached
デフォルトの状態では使用されていませんが、設定なども済んでおりすぐに使い始めることができます。WordPressプラグインの中ではmemcachedを使用できるものがあったり、複数台構成のためにNginxのキャッシュをmemcached上に持つようにする、と言ったケースが考えられます。
PHP
ほぼデフォルト設定なので、WordPress以外のPHPアプリケーションを同じVPS内にホストする際でも、大きな問題にはならないと思います。Opcode Cacheの仕組みはインストールされていないので、必要に応じて以下のコマンドでインストールしてください。PHP5.5系なのでAPCは使えないと思います。標準となったZend OpCacheを使うのが良いでしょう。
|
1 |
yum install php-opcache |
インストールした後、php-fpmをリスタートします。
|
1 |
service php-fpm restart |
ベンチマーク
それではabコマンドで簡単にベンチマークをしてみます。WordPressテンプレートを適用した初期状態のVPSで、一番スペックの低い1GBプランを使用しました。(対象VPSのIPアドレスは*でマスクしてます)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# ab -c 100 -n 1000 http://***.***.***.***/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking ***.***.***.*** (be patient) Server Software: nginx Server Hostname: ***.***.***.*** Server Port: 80 Document Path: / Document Length: 7531 bytes Concurrency Level: 100 Time taken for tests: 0.369 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 7725000 bytes HTML transferred: 7531000 bytes Requests per second: 2710.34 [#/sec] (mean) Time per request: 36.896 [ms] (mean) Time per request: 0.369 [ms] (mean, across all concurrent requests) Transfer rate: 20446.62 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 5 18 6.3 18 37 Processing: 2 16 7.5 15 34 Waiting: 1 15 7.0 14 31 Total: 9 35 9.4 37 59 |
Requests per secondは2710.34となりました。これはNginxのキャッシュが効いている状態なので、PHPやPercona Server(MySQL)にはほぼ負荷がかかっていません。
試しにNginxのキャッシュを切ってみましょう(Zend OPCacheを有効にしています)。動的なコンテンツがあり、キャッシュが使えない場合を想定しています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# ab -c 100 -n 1000 http://***.***.***.***/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking ***.***.***.*** (be patient) Server Software: nginx Server Hostname: ***.***.***.*** Server Port: 80 Document Path: / Document Length: 7531 bytes Concurrency Level: 100 Time taken for tests: 33.393 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 7725000 bytes HTML transferred: 7531000 bytes Requests per second: 29.95 [#/sec] (mean) Time per request: 3339.275 [ms] (mean) Time per request: 33.393 [ms] (mean, across all concurrent requests) Transfer rate: 225.92 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 1 5 7.0 2 31 Processing: 296 3165 552.1 3263 3697 Waiting: 296 3165 552.1 3262 3697 Total: 316 3169 547.3 3265 3698 |
Requests per secondは29.95でした。Nginxのキャッシュが効かないと、このくらいになってしまいます。WordPressは、PHPアプリケーションとしてはかなり重量級なので仕方ないところでしょうか。
今回のケースではCPUコア数が重要なファクターになるので、上位プランへ変更することでパフォーマンスを上げることができます。ConoHaの最上位プランなら、10コアまで使うことができます。
おわりに
ConoHaのWordPressテンプレートは、Nginxのキャッシュを使用してページ表示を高速化しています。また、キャッシュのコントロールをWordPressのプラグインでコントロールできるので、管理が簡単にできます。
個人的には、実際にサーバの構築に慣れた技術者でも、これだけの構成を一からセットアップするのは、結構面倒だと思います。それがコントロールパネルから数クリックで作れるのはConoHa VPSだけでしょう。
また、最も低価格の1Gプランでも秒間2,000リクエスト程度を捌けます。1GBプランは月額930円(税別)で、かつ転送量で課金されることがないので、コストパフォーマンスもとても良いです。
WordPressサイトを構築する際は、是非ConoHaのWordPressテンプレートを使ってみてください!