Memcached(バージョン1.4.14)をtelnetからごにょごにょする機会があったので簡単にまとめたいと思います。
##■ ローカルサーバーからMemcachedサーバーにtelnet経由で接続する
telnet サーバーのアドレス 11211(memcache用に開けているポート)
##■ statsコマンドで状況を知る
例えば"stats"と打つと以下のように表示されます。
stats
STAT pid 32949
STAT uptime 619521
STAT time 1390916003 起動時間
STAT version 1.4.15 バージョン
STAT libevent 1.4.13-stable
STAT pointer_size 64 64bitのマシンで動いているよ
STAT rusage_user 11.272286
STAT rusage_system 35.064669
STAT curr_connections 16 現在のコネクション数
STAT total_connections 7647 今までのコネクション数
STAT connection_structures 97
STAT reserved_fds 20
STAT cmd_get 193746 今までgetした数
STAT cmd_set 21925 今までsetした数
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 185834 getでhitした数
STAT get_misses 7912 getしてhitしなかった数
STAT delete_misses 5200
STAT delete_hits 128
STAT incr_misses 0
STAT incr_hits 29
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 27488093
STAT bytes_written 465934236
STAT limit_maxbytes 67108864 memcachedの最大容量
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 1930098
STAT curr_items 1044 現在のアイテム数
STAT total_items 21954 アイテム数の累計
STAT expired_unfetched 211
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 303
END
キャッシュのヒット率(get_hits / cmd_get * 100)で求めます。当然ですがヒット率が高いほどキャッシュを有効活用できていると言えます。
個人的にキャッシュヒット率がどのくらいが平均的なのか気になります。。。
##■ stats itemsでキャッシュされているレコード情報を取得
stats items
STAT items:1:number 17
STAT items:1:age 38455
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 1
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
STAT items:3:number 104
STAT items:3:age 162625
STAT items:3:evicted 0
STAT items:3:evicted_nonzero 0
STAT items:3:evicted_time 0
STAT items:3:outofmemory 0
STAT items:3:tailrepairs 0
STAT items:3:reclaimed 35
STAT items:3:expired_unfetched 20
STAT items:3:evicted_unfetched 0
ここの見方がいまいちまだわかっていませんが、outofmemoryの数が多かったりしないか気をつけてみています。
アプリケーション側でSoketTimeout系のエラーが発生している場合、おそらくoutofmemory系のエラーが関係しているのではと思っています。まだ検証中なので正確な情報ではありませんが。。。
dumpを取る
stats cachedump 1(itemsの番号) 100(limit)
ITEM USER_SEQ [6 b; 1390296482 s]
ITEM COMPANY_SEQ [6 b; 1390296482 s]
ITEM POST_SEQ [6 b; 1390296482 s]
キャッシュの中身を見る
get USER_SEQ
VALUE USER_SEQ 0 6
337509
END
get KEY名でキャッシュの中身を見ることができます。
## キャッシュを削除する
delete USER_SEQ
delete KEY名で該当のキャッシュを削除することができます。