memcached+WordPressで高速化

大規模なところでは使いまくられている「memcached」 今更ながら導入してみました。

memcachedとは(Wikipediaからの引用)

memcached は、データとオブジェクトをメモリ内にキャッシュすることでデータベースから読み出しを行う回数を減少させ、データベースを用いた Web サイトを高速化するために良く用いられる。

このサイトに導入したけどどれぐらいの効果があるかはまったくもって不明^^;; インストールして動いてよかったーー程度なのは秘密です。

環境はAWSでのmemcachedを動かすためにMicro Instanceを1台追加 Memoryが64Mしかないのであれですが^^;;

wordpress に memcached を使う手順」の通りにやってみる。

使ったAMIが「Amazon Linux AMI」を使ったからはわかりませんがちょっとはまりました。

memcachedのインストール memcachedサーバ側で下記コマンドを入力

#yum install libevent memcached

memcachedの起動

#service memcached start

これで起動が確認できます。

memcachedの動作確認

#telnet localhost 11211 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. set abcd 0 0 4 ABCD STORED VALUE abcd 0 4 ABCD END

Firewallの設定を変更してWebサーバから11211の通信を許可します。 同じテストをして同じ結果が得られたらOK

自動起動設定 memcachedサーバの起動時にmemcachedのサービスが起動するようにします。

chkconfig memcached on

これでmemcachedのサーバは終了。 ほーら簡単!!! これを増やせばmemcachedサーバを増やせる!!! 楽ちんだねーーー

[ad#ad-links]

phpのExtentions側が実は面倒だった(x_x)

php-pecl-memcacheのインストール

yum install php-pecl-memcache

「No package php-pecl-memcache available.」と怒られ

pecl install memcache

bash: pecl: command not found」と怒られ・・・

peclを入れるためにphp-develのInstall

yum install php-devel

peclを入れて実行すると

pecl install memcache configure: error: no acceptable C compiler found in $PATH

と怒られてgccのインストール

その後「checking for the location of ZLIB... no」と怒られてzlib-develのインストール

yum install php-devel zlib-devel gcc

でやったらいいみたいです。

これでphpmemcachedが使えるようになります。 /etc/php.iniにextension=memcache.soを追加

apacheを再起動してphpinfo(); で確認してみます

これで認識しています。

続いて WordPressとの連携 最新版のobject-cache.phpMemcached Backendmemcached/tags/2.0配下にありますから落としてきます。 その落としてきた「object-cache.php」をWordPress/wp-content/直下に置きます。

設定変更箇所は $buckets = array('default' => array('127.0.0.1:11211')); となっているところのIPをmemcachedサーバのIPにします。

連携も完了

[ad#ad-links]

実際memcachedを利用してmemcachedから返答があることを確認します。 memcache.phpを利用すると「ヒット率」や「Memory使用率」を見ることができます。

初期IDはmemcache パスワードはpassword となっています。

これはmemcache.phpに埋め込まれています。

define('ADMIN_USERNAME','memcache'); // Admin Username define('ADMIN_PASSWORD','password'); // Admin Password

変更箇所は下記の通り

$MEMCACHE_SERVERS[] = 'memcachedサーバ:11211'; // add more as an array

memcache.phpをブラウザで見てみると下記のように情報が取れます。

17時間ほど動かした結果

アクセス数が少ない(DB負荷が低い)サーバだったらやっぱり効果低いかもね 次はmemcached複数サーバで立ち上げてとかやってみたいなぁ。