Yesterday, I found this cool script 'memcache-top' which nicely prints out stats of memcached live. It looks like,
memcache-top v0.6 (default port: 11211, color: on, refresh: 3 seconds)
INSTANCE USAGE HIT % CONN TIME EVICT/s READ/s WRITE/s
127.0.0.1:11211 88.8% 94.8% 20 0.8ms 9.0 311.3K 162.8K
AVERAGE: 88.8% 94.8% 20 0.8ms 9.0 311.3K 162.8K
TOTAL: 1.8GB/ 2.0GB 20 0.8ms 9.0 311.3K 162.8K
(ctrl-c to quit.)
it even makes certain text red when you should pay attention to something!
Q. Broadly, what are some useful tools/techniques you've used to check that memcached is set up well?
For a production systems, you should really set up active monitoring (with downtime alerts, automated restarts etc.) of Memcache using something like Monit. Here is an example config: Monitoring Memcache with Monit
Good interface to accessing Memcached server instances is phpMemCacheAdmin.
I prefer access from the command line using
telnet
.To make a connection to Memcached using Telnet, use the following
telnet localhost 11211
command from the command line.If at any time you wish to terminate the Telnet session, simply type
quit
and hit return.You can get an overview of the important statistics of your Memcached server by running the
stats
command once connected.Memory is allocated in chunks internally and constantly reused. Since memory is broken into different size slabs, you do waste memory if your items do not fit perfectly into the slab the server chooses to put it in.
So Memcached allocates your data into different "slabs" (think of these as partitions) of memory automatically, based on the size of your data, which in turn makes memory allocation more optimal.
To list the slabs in the instance you are connected to, use the
stats slab
command.A more useful command is the
stats items
, which will give you a list of slabs which includes a count of the items store within each slab.Now that you know how to list slabs, you can browse inside each slab to list the items contained within by using the
stats cachedump [slab ID] [number of items, 0 for all items]
command.If you want to get the actual value of that item, you can use the
get [key]
command.To delete an item from the cache you can use the
delete [key]
command.