WordPress高速化: memcachedの利用

高速道路

前回はWP Hyper Responseというプラグインを使ってWordPressの高速化を検討しました。

今回はmemcachedというソフトを使って高速化に挑戦してみたいと思います。これまでの高速化についてはまとめページを参照してください。

memcachedとは

Wikipediaによるとmemcachedとは「汎用の分散型メモリキャッシュシステム」とのことです。

かなり簡単に言うと、よく使うデータはメモリ上においておいて、すぐに使えるようにしておきましょう、というシステムです。memcachedはいろいろなシステムと組み合わせることができ、WordPressとも組み合わせることができます。

その名前の通りメモリ内にデータを保持しておくので、同じでデータを再利用するときには高速にアクセスすることができます。WordPressではデータベースへの問い合わせなど頻繁にデータ(オブジェクト)の読み出しが発生するので、ここをmemcachedで高速に再利用できるようにすると高速化できる、というわけです。

また、このブログが設置されているServersMan@VPSはHDDのアクセスが遅い傾向があるので、HDDアクセスを減少させるmemcachedは効果が期待できます。

必要なパッケージのインストール

WordPressでmemcachedを利用するためには、memcached自体と、memcachedにPHPからアクセスするためのphp5-memcacheモジュールとphp5-memcachedモジュールが必要になります。

memcachedのインストールと設定

Debian 7.0にはmemcachedが含まれていますので、apt-getを使って簡単にインストールすることができます。

sudo apt-get install memcached

memcachedの設定は/etc/memcached.confで行います。ほとんどそのままでよいと思いますが、使用するメモリサイズぐらいは確認しておきましょう。「-m」にから始まる行が使用メモリサイズの指定です。私は64(64MB利用)としておきました。

memcached.confを変更したらmemcachedを再起動しておきます。

sudo service memcached restart

php5-memcacheとphp5-memcachedのインストール

いろいろ試したのですが、Debian 7.0のphp5-memcache/php5-memcachedパッケージではうまく動作しませんでした。そこでDotdebという非公式パッケージを利用します。Dotdebでは最新のPHPやMySQLのパッケージを配布しています。

まずはDotdebのパッケージリストを追加するために次の内容のファイルをdotdeb.listとして/etc/apt/sources.list.d/に作成します。

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all
deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all

次にDotdebのGPGキーをシステムに追加します。

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -

これで準備が整いました。パッケージリストを更新した後にphp5-memcachedとphp5-memcacheをインストールします。

sudo apt-get update
sudo apt-get install php5-memcache php5-memcached

ほかにもいろいろなパッケージのインストールを要求されると思います。言われたとおりにインストールしておきましょう。

WordPressの設定

WordPressにはキャッシュをmemcached経由に行わせるためのプラグインと、memcachedの動作状況を表示するためのプラグインの二つをインストールします。

私の場合は前者にはMemcached Reduxプラグインを、後者にはWP Memcached Managerプラグインを使うことにしてみました。

Memcached Reduxプラグインのインストール

Memcached ReduxプラグインはWordPressのダッシュボードからインストールすることができます。

プラグインの新規追加で「Memcached Redux」で検索すると出てきますので「今すぐインストール」を選択し、インストールに成功したらこのプラグインを有効にします。

このプラグインには設定項目はないのですが、有効にするために重要なステップがあります。それはこのプラグインのファイル「object-cache.php」を「wp-conentディレクトリにコピーしなければいけない」ということです。これを忘れると機能しません。

私の場合は、プラグインが更新される場合も考慮して、コピーではなくシンボリックリンクを作ることにしました。

cd wp-contentのディレクトリ(/var/lib/wordpress/wp-contentなど)
sudo ln -s plugins/memcached-redux/object-cache.php .  

これでMemcached Reduxプラグインの設定は完了です。

WP Memcached Managerプラグインのインストールと設定

このプラグインもWordPressのダッシュボードからインストールすることができます。「WP Memcached Manager」で検索してインストールしましょう。

WP Memcached Manager
WP Memcached Manager
Developer: Warwick Poole
Price: Free

このプラグインを有効にするとWordPressダッシュボードの左側に「memcached」という項目が現れます。そのメニューから「Edit servers」を選択します。

Memcached→Edit servers

表示された画面で「Server IP」に「127.0.0.1」を、「Server Port」に「11211」を入力して「Add Server」を選択してください(もしかしたら最初から設定されていたかもしれません)。

これでWP Memcached Managerプラグインの設定は完了です。

不要なプラグインの削除

memcachedを利用するにあたり、機能がかぶりそうな下記のプラグインは無効にしておきました(その後削除しました)。

  • wp-file-cache
  • DB Cache reloaded

動作状況の確認

それでは動作状況を確認してみましょう。

先ほどのWordPressダッシュボードにあるMemcachedメニューから「Memecached」を選択します。

Memcached→Memcached

「Select memcached server to manage」というドロップダウンボックスが表示されるので、「127.0.0.1:11211」を選んで「Manage Server」を選択します。

Memcachedサーバの選択

すると現在のmemcachedの利用状況が表示されます。

memcachedのステータス

一番上の「Memcached Server Status」が「Server online. Connected.」になっていない場合は、memcachedとの接続に失敗しています。memcachedのポート番号などの設定を見直してください。

注目すべきは下から5番目の「GET HITS」です。私の場合はこのヒット率が88%なので、かなり効率的にmemcachedが効いていることがわかります。

memcachedの効果

問題は本当に効果があるのか、ということです。

これまた私の主観ですが

  • WordPressの管理画面→明らかにレスポンスがよくなった
  • 通常のWordPress画面→特に変わらず

という感じです。

実際にベンチマークサイトを使ってWordPress画面の読み込み速度を比較したのですがほとんど変わりませんでした。これはWP Super Cacheを導入することによって、通常のWordPress画面の場合にはすでにデータベースアクセスなどが削減されているためだと思います。

まとめ

今回はWordPressの高速化を目指してmemcacheとWordPressを組み合わせてみました。

WP Super Cacheが導入済みの場合、通常のWordPress画面で早くなることはありませんが、管理画面では明らかに反応がよくなります。メモリの余裕がある方はぜひmemcachedを利用してみてください。

次回はhtmlファイル自体を圧縮して高速化を目指します。