MixiやFacebookで使われているメモリキャッシュ memcached
特徴
memcached同士での通信は行わず、分散メモリキャッシュサーバとして使えるところ٩(๑❛ᴗ❛๑)۶Facebookでは数千台のmemcachedサーバを使用して負荷分散しており、AWSのElastiCacheなどでも活用されている。注意点はアプリ側でコーディングしてmemcachedサーバに接続してあげないといけません。ですがご安心を。データを入れたり、読み込み自体のコーディングはとっても簡単!今回はインストールまでご紹介。
関連
[速報]mixiが障害の経緯を発表。原因はお盆のアクセス急増ではなく、memcachedの異常終了
http://www.publickey1.jp/blog/10/miximemcached.html
remiを追加
1 |
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm |
1 2 3 4 5 6 7 |
# yum install --enablerepo=remi-php55,remi memcached memcached-devel インストール: memcached.x86_64 0:1.4.22-1.el6.remi memcached-devel.x86_64 0:1.4.22-1.el6.remi 依存性関連をインストールしました: libevent-last.x86_64 0:2.0.22-1.el6.remi |
1 2 3 4 5 6 7 8 |
# yum install --enablerepo=remi-php55,remi php-pecl-memcached インストール: php-pecl-memcached.x86_64 0:2.2.0-2.el6.remi.5.5 依存性関連をインストールしました: libmemcached-last-libs.x86_64 0:1.0.18-2.el6.remi php-pecl-igbinary.x86_64 0:1.2.1-1.el6.remi.5.5 php-pecl-msgpack.x86_64 0:0.5.7-1.el6.remi.5.5 |
1 2 3 |
# vi /etc/php.ini date.timezone = "Asia/Tokyo" |
1 2 |
# service memcached start memcached を起動中: [ OK ] |
1 2 |
# service memcached status memcached (pid 10411) を実行中.. |
1 2 3 |
[root@localhost backup]# chkconfig memcached on [root@localhost backup]# chkconfig memcached --list memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
PHPとの連携を確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# php -i | grep memcache /etc/php.d/z-memcached.ini, memcached memcached support => enabled libmemcached version => 1.0.18 memcached.compression_factor => 1.3 => 1.3 memcached.compression_threshold => 2000 => 2000 memcached.compression_type => fastlz => fastlz memcached.serializer => igbinary => igbinary memcached.sess_binary => no value => no value memcached.sess_connect_timeout => 1000 => 1000 memcached.sess_consistent_hash => no value => no value memcached.sess_lock_expire => 0 => 0 memcached.sess_lock_max_wait => 0 => 0 memcached.sess_lock_wait => 150000 => 150000 memcached.sess_locking => 1 => 1 memcached.sess_number_of_replicas => 0 => 0 memcached.sess_prefix => memc.sess.key. => memc.sess.key. memcached.sess_randomize_replica_read => no value => no value memcached.sess_remove_failed => 1 => 1 memcached.sess_sasl_password => no value => no value memcached.sess_sasl_username => no value => no value memcached.store_retry_count => 2 => 2 memcached.use_sasl => no value => no value Registered save handlers => files user memcached |
1 2 3 4 5 6 7 |
# cat /etc/sysconfig/memcached PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="" |
1 2 3 4 |
# vi /etc/sysconfig/iptables #memcache -A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT |
iptables再起動
1 |
# service iptables restart |