当memcached启动起来并被访问后,如何知道其详细运行情况呢,详细包括守护进程的pid、版本、保存的项目数量、内存占用、最大内存限制等信息。
1.telnet方式访问memcached
# telnet 192.168.1.210 11211
然后输入:stats
信息如下:
STAT pid 31235
STAT uptime 958
STAT time 1233563908
STAT version 1.2.6
STAT pointer_size 32
STAT rusage_user 0.025996
STAT rusage_system 0.039993
STAT curr_items 0
STAT total_items 4
STAT bytes 0
STAT curr_connections 2
STAT total_connections 613
STAT connection_structures 6
STAT cmd_get 14
STAT cmd_set 4
STAT get_hits 9
STAT get_misses 5
STAT evictions 0
STAT bytes_read 6046
STAT bytes_written 218858
STAT limit_maxbytes 1048576000
STAT threads 1
END
其中,
pid是memcached进程ID
uptime是memcached运行时间,单位:秒
time是memcached所在服务器当前时间
version是memcached当前版本号
rusage-user是该进程累计的用户时间,单位:秒
rusage_system是该进程累计的系统时间,单位:秒
curr_items是当前存储的内容数量
total_items 是memcached启动以来存储的内容总数
bytes 是memcached当前存储所占字节总数
curr_connections:当前连接数量
total_connections 是memcached运行以来接受的连接总数
connection_structures 是memcached分配的连接结构的数量
cmd_get是查询缓存的次数。
cmd_set 是存储(添加、更新)总数
get_hits就是缓存命中的次数
get_misses就是未命中的次数
evictions:为了给新的数据项目释放空间,从缓存移除的缓存对象的数目。比如超过缓存大小时根据LRU算法移除的对象,以及过期的对象。
bytes_read 是memcached从网络读取的总字节数
bytes_written 是memcached向网络发送的总字节数
limit_maxbytes是memcached存储时被允许使用的字节总数
这两个数据相除一下就能得到平均每秒请求缓存的次数
整个memcached是个大hash,用cmd_get没有找到的内容,就会调用一下cmd_set写进缓存里。紧跟着是get_hits,就是缓存命中的次数。
缓存命中率 = get_hits/cmd_get * 100%。
下面的get_misses的数字加上get_hits应该等于cmd_get。
而total_itemscurr_items表示现在在缓存中的键值对个数,在图上total_items == cmd_set == get_misses,不过当可用最大内存用光时
,memcached就会删掉一些内容,上面的等式就不成立了。