技術ブログ


WordPress4.0(Benny)を使ってみよう!

wp00

目次

  1. WordPressテンプレートがアップデート
  2. なぜ高速なのか?
  3. 使ってみよう
  4. 内部構造を見る
  5. ベンチマーク
  6. おわりに

WordPressテンプレートがアップデート

本日、ConoHaのWordPressテンプレートがアップデートされました! 9/4にリリースされたばかりのWordPress4.0(Benny)を始め、ソフトウェアが最新バージョンに更新されています。

WordPressテンプレートとは、VPSにOSを再インストールするときのディスクイメージのようなもので、OS以外にWordPress, Nginx, Percona server(MySQL)などのソフトウェアが予めインストールされています。ニーズの多いWordPressを、VPSで簡単に手軽に利用することができます。

今回のアップデートでは、サーバ側のソフトウェアはマイナーアップデートが中心です。また、WordPressも4.0という区切りのいいバージョンとはいえ、あくまでマイナーアップデートという位置づけのようです。

WordPress 4.0 “ベニー”

4.0という数字は私たちにとっては単に3.9の後、4.1の前の数字にすぎませんが、少し余分な磨きを入れたような感じもしています。

なので、パフォーマンスが劇的に変わるなどの大幅な変化はありません。しかし、ConoHaのWordPressテンプレートが、手軽に高速なWordPress環境を作るための魅力的な手段であることには変わりありません。

なぜ高速なのか?

実は、ConoHaのWordPressテンプレートは株式会社デジタルキューブ様から提供を受けているもので、非常にパフォーマンスが高いです。デジタルキューブ様といえばご存じ、超高速のWordPressホスティングで名高い会社で、WordPressテンプレートにも、その高速化のノウハウが適用されています。

このエントリでは、WordPressテンプレートがなぜ速いのかを技術的に解説すると共に、実際にConoHa VPS上での簡単なベンチマークをしてみたいと思います。

使ってみよう

ConoHaコントロールパネルの、OS再インストールのプルダウンメニューから選択できます。

wp01

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側で様々な変更(エントリの追加、更新、コメントの追加など)が行われた際に、自動的にキャッシュの削除を行ってくれる便利なプラグインです。キャッシュを削除する範囲なども、細かく調整できます。

ただ、デフォルトではキャッシュの削除が無効になっているので、これを有効にしましょう。

wp02

これでキャッシュの削除が有効になります。

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を使うのが良いでしょう。

インストールした後、php-fpmをリスタートします。

ベンチマーク

それではabコマンドで簡単にベンチマークをしてみます。WordPressテンプレートを適用した初期状態のVPSで、一番スペックの低い1GBプランを使用しました。(対象VPSのIPアドレスは*でマスクしてます)

Requests per secondは2710.34となりました。これはNginxのキャッシュが効いている状態なので、PHPやPercona Server(MySQL)にはほぼ負荷がかかっていません。

試しにNginxのキャッシュを切ってみましょう(Zend OPCacheを有効にしています)。動的なコンテンツがあり、キャッシュが使えない場合を想定しています。

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テンプレートを使ってみてください!

執筆者紹介: ひろのぶ

フロントの開発したり、デーモン書いたり、Linux弄ったり、サーバの面倒見たり、イベントの企画したり、いろいろ屋さんです。現職で社内システムの開発運用や、自社プロダクトの開発業務に従事してきました。最近ConoHaの中の人になりました。GMOインターネット ホスティング事業部所属。