====== memcache ======
===== 構築 =====
==== インストール ====
# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
# rpm -ivh http://rpms.famillecollet.com/enterprise/5/remi/x86_64/remi-release-5-8.el5.remi.noarch.rpm
# yum -y --enablerepo=remi,epel install memcached
==== 設定確認・変更 ====
# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
==== 起動 ====
# /etc/rc.d/init.d/memcached start
(# yum -y --enablerepo=remi install php-pecl-memcache)
==== 自動起動設定 ====
# chkconfig memcached on
===== 起動時に指定可能なオプション =====
memcached -u daemon -d -m 128 -p 11211 -c 100000 -l 127.0.0.1
  * u\\ 起動するユーザ\\ rootでは起動できないので注意
  * d\\ デーモンとして起動
  * m\\ メモリサイズ\\ default:64(MB)\\ 物理メモリからシステム関連のメモリを引いた数字。\\ 物理メモリの80%程度までを指定。
  * p\\ Listenするポート番号\\ default:11211
  * c\\ 最大コネクション数\\ default:1024\\ 1024以上しか指定できない。
  * l\\ ListenするIPアドレス
  * vv\\ 冗長モード\\ very verboseモードで起動してデバックメッセージやエラーをコンソールへ出力
==== サンプル ====
  * memcached -u daemon -d -m 3000 -p 11211  -c 262144 -l 127.0.0.1
  * memcached -u nobody -C -m 16G -p 11211 -c 32768 -U 0
===== memcachedコマンド =====
  * set\\ set <キー> <フラグ> <有効期間> <サイズ>\\ \\ キー「hoge」に「123」という3バイトのデータを非圧縮/無期限で格納set hoge 0 0 3
123
=>STORED
  * get\\ get <キー>\\  \\ キー「hoge」の値を取得get hoge
=>VALUE hoge 0 3
=>123
=>END
===== pecl::memcache =====
==== インストール ====
# yum -y --enablerepo=remi install php-pecl-memcache
==== 設定確認・変更 ====
# echo "extension=memcache.so" | sudo tee /etc/php.d/memcache.ini
==== 起動(= 設定反映) ====
# /etc/rc.d/init.d/httpd restart
===== memcached 監視 =====
==== phpの動作するサーバからmemcachedが動作しているサーバへコマンドを投げる ====
# php -r '$m=new Memcache;$m->connect("memcachedサーバ");print_r($m->getstats());'
出力概要
Array
(
   [pid] => プロセスID
   [uptime] => memcachedの起動時間(秒)
   [time] => 現在時刻のタイムスタンプ
   [version] => memcacheのバージョン
   [pointer_size] => OSが32bit又は64bit
   [rusage_user] => プロセスがユーザモードで動作した累計時間?(秒.マイクロ秒)
   [rusage_system] => プロセスがカーネルモードで動作した累計時間?(秒.マイクロ秒)
   [curr_connections] => 現在のコネクション数
   [total_connections] => memcacheの起動からの累計コネクション数
   [connection_structures] => memcacheが確保したコネクション構造体数
   [cmd_get] => GETコマンド発行の累計
   [cmd_set] => SETコマンド発行の累計
   [cmd_flush] => 
   [get_hits] => リクエストでキーが見つかった数
   [get_misses] => リクエストでキーが見つからなかった数
   [delete_misses] => 
   [delete_hits] => 
   [incr_misses] => 
   [incr_hits] => 
   [decr_misses] => 
   [decr_hits] => 
   [cas_misses] => 
   [cas_hits] => 
   [cas_badval] => 
   [auth_cmds] => 
   [auth_errors] => 
   [bytes_read] => ネットワークから受信したバイト数
   [bytes_written] => ネットワークへ送信したバイト数
   [limit_maxbytes] => memcacheの最大容量(バイト)
   [accepting_conns] => 
   [listen_disabled_num] => 
   [threads] => リクエスト当たりに動作するスレッド数
   [conn_yields] => 
   [bytes] => 
   [curr_items] => 
   [total_items] => 
   [evictions] => 
   [reclaimed] => 
)
==== キャッシュヒット率=get_hits/cmd_get ====
# php -r '$m=new Memcache;$m->connect("127.0.0.1");$c=$m->getstats();$c1=$c["get_hits"];$c2=$c["cmd_get"];$c3=($c1<>0 and $c2<>0)?$c1/$c2:0;print $c3;'
==== コンソールから監視 ====
# echo 'stats' | nc 127.0.0.1 11211
STAT pid 4574
STAT uptime 13918140
STAT time 1389948852
STAT version 1.4.15
STAT libevent 1.4.13-stable
STAT pointer_size 64
STAT rusage_user 908.325913
STAT rusage_system 2409.051768
STAT curr_connections 5
STAT total_connections 17983490
STAT connection_structures 166
STAT reserved_fds 20
STAT cmd_get 17358812
STAT cmd_set 17358229
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 15102293
STAT get_misses 2256519
STAT delete_misses 567296
STAT delete_hits 101671
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 2796046793
STAT bytes_written 2173543015
STAT limit_maxbytes 5368709120
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 18
STAT hash_bytes 2097152
STAT hash_is_expanding 0
STAT bytes 21909458
STAT curr_items 125919
STAT total_items 17358229
STAT expired_unfetched 2128513
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 2128513
END
===== 参考サイト  =====
CloudForecastでmemcachedのコネクション数をモニタリング
http://d.hatena.ne.jp/taka512/20100324/1269428213
「stats settings」コマンド
http://blog.nomadscafe.jp/2010/08/cloudforecastmemcached.html
memcached 起動時オプション
http://tech.feedforce.jp/memcached.html
memcachedの安定稼働のためのメモ
http://wiki.livedoor.jp/puriketu99/d/memcached%A4%CE%B0%C2%C4%EA%B2%D4%C6%AF%A4%CE%A4%BF%A4%E1%A4%CE%A5%E1%A5%E2
Memcached
http://webmemo.uzuralife.com/category/336
memcachedコマンド一覧
http://l-w-i.net/t/memcached/command_001.txt