memcachedの状態を調べる

memcached富豪的に使ってたせいなのか、負荷が高い状態になっていたので調べてた。

telnetを使う場合

memcacheプロトコルを直接入力する方法。

$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 29324
STAT uptime 95496
STAT time 1301136754
STAT version 1.2.2
STAT pointer_size 64
STAT rusage_user 3.868241
STAT rusage_system 6.148384
STAT curr_items 982
STAT total_items 3947
STAT bytes 6095481
STAT curr_connections 1
STAT total_connections 83000
STAT connection_structures 3
STAT cmd_get 9165
STAT cmd_set 3947
STAT get_hits 6500
STAT get_misses 2665
STAT evictions 0
STAT bytes_read 21976238
STAT bytes_written 74918727
STAT limit_maxbytes 33554432
STAT threads 1
END
quit
Connection closed by foreign host.

cmd_getが起動してから累計のgetの回数、cmd_setがsetの回数です。
他にも "stats slabs", "stats items" などで使用状況を確認したりできます。

各種コマンドスクリプトを使う

memcached-tool

memcached-toolはmemcachedに同梱されているスクリプトです。古いバージョンだと同梱されていないかも。
Perlで書かれたシンプルなコマンドなので、同梱されていない場合は最新版のアーカイブから入手して使うと良いかも。

$ memcached-tool localhost:11211
  #  Item_Size   Max_age  1MB_pages Count   Full?
  1      96 B    87770 s       1      21      no
  2     120 B     3737 s       1       1      no
  3     152 B     3622 s       1       1      no
  9     600 B     3767 s       1       1      no
 10     752 B     3767 s       1       3      no
 11     944 B     3767 s       1       2      no
 12     1.2 kB    4182 s       1      29      no
 13     1.4 kB    4181 s       1      22      no
 14     1.8 kB    4183 s       1      55      no
 15     2.3 kB    4178 s       1      11      no
 16     2.8 kB    4177 s       1      20      no
 17     3.5 kB    4185 s       2     427      no
 18     4.4 kB    4184 s       1     113      no
 19     5.5 kB    4181 s       1      38      no
 20     6.9 kB    4185 s       1      98      no
 21     8.7 kB    4185 s       1      72      no
 22    10.8 kB    4179 s       1      29      no
 23    13.6 kB    4182 s       1      19      no
 24    16.9 kB    4185 s       1      16      no
 32   101.1 kB    3829 s       1       1      no
 40   1024.0 kB   96065 s       3       3     yes

引数としてstatsなどを指定すると、statsの結果を表示してくれたりします。
watchコマンドと組み合わせて監視するなどして使うと便利かも。

$ watch -n 1 memcached-tool localhost:11211 stats

これだと1秒ごとにコマンドを実行して結果表示。

memcached-top

topコマンドのようにmemcachedの状態を表示してくれます。