memcached+WordPressで高速化
大規模なところでは使いまくられている「memcached」 今更ながら導入してみました。
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)
yum install php-pecl-memcache
「No package php-pecl-memcache available.」と怒られ
pecl install memcache
「bash: pecl: command not found」と怒られ・・・
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
でやったらいいみたいです。
これでphpでmemcachedが使えるようになります。 /etc/php.iniにextension=memcache.soを追加
apacheを再起動してphpinfo(); で確認してみます
これで認識しています。
続いて WordPressとの連携 最新版のobject-cache.phpをMemcached Backendのmemcached/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をブラウザで見てみると下記のように情報が取れます。
アクセス数が少ない(DB負荷が低い)サーバだったらやっぱり効果低いかもね 次はmemcachedを複数サーバで立ち上げてとかやってみたいなぁ。