WordPress のオブジェクトキャッシュ機構で memcached を利用する

2010年9月14日

サーバを移行してみたことでいろいろ問題が発生しました。

常時 Web サーバを稼働させているとどこかのタイミングでメモリ不足が原因でプロセスが落ちまくる、Apache の負荷がスゴいことになるとかは、稼働するプロセスの数をとことん減らすことでたぶん改善。更新時の高負荷は XML-Sitemap が原因ぽいのでそれをちょっと停止して様子を見てみようかなと。

あとは、少しでも WordPress の動作を快適にしてみたかったので、ぐぐっている最中に見つけた、memcached を使ってオブジェクトキャッシュを行う方法を試してみました。

memcached のインストール

memcached と libevent はソースからインストールしました。

$ wget http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
$ gtar xvzf libevent-1.4.14b-stable.tar.gz 
$ cd libevent-1.4.14b-stable
$ ./configure
$ make
$ sudo make install
$ cd ../
$ wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
$ gtar xvzf memcached-1.4.5.tar.gz
$ cd memcached-1.4.5
$ ./configure --with-libevent=/usr/local/libevent/
$ make
$ sudo make install
$ sudo cp scripts/memcached.sysv /etc/rc.d/init.d/memcached
$ sudo mkdir /var/run/memcached
$ sudo ln -s /usr/local/bin/memcached /usr/bin/
$ sudo /etc/rc.d/init.d/memcached start

WordPress で memcached を利用する

まずは PHP から memcached を利用できるようにするために、

$ pecl install memcache 

足りないパッケージは適当に追加で。

その後、php.ini の最後に extension=memcache.so を追加して Apache を再起動。phpinfo() で確認すると、

こんな感じで動いてるのが確認できます。

その後、MySQL の設定ファイル my.cnf を編集して、

[mysqld]
query_cache_limit = 1M
query_cache_size = 24M
query_cache_min_res_unit= 4k
query_cache_type = 1 

として再起動。

最後に、WordPress のオブジェクトキャッシュ機構で memcached を使用するために、 /wp-content/ 以下に http://plugins.trac.wordpress.org/browser/memcached/tags/2.0 からダウンロードした object-cache.php を保存して終了。

memcached の効き具合は、memcache.php で確認できるのでお好みで設置すればOK。

さて、これで少しはマシになったかなあ。表示されるクエリー数は結構減ってるみたいですが。体感できると嬉しいですね。

参考