memcached的运行状态监控

时间:2021-05-14 19:45:48

当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就会删掉一些内容,上面的等式就不成立了。