上一篇文章,我翻译了下官方protocol里的有关stats部分的内容,这是为了监控memcached做准备。现在所有能找到的memcached监控工具,无论是纯数值界面的还是带gui的,从根本上来说都还是调用memcached官方的stats接口来获取服务器数据。所以翻译并理解官方stats接口的返回内容是极其有必要的。那么,准备工作做好了,接下来就让我们来看下memcached监控的主要数值吧。下面直接上数值了,如果有某些参数的意思不明白的话,请看我上一篇protocol翻译文。

1. memcached总览数值:

使用stats命令来查看数据。

  • 存储对象的总量:curr_items
  • 存储对象的增长率:total_items(now) - total_items(prev) / total_items(prev)
  • 真实的总内存消耗(字节):bytes
  • 输入数据流量(字节):bytes_read
  • 输出数据流量(字节):bytes_written
  • LRU回收对象次数:evictions
  • get次数:cmd_get
  • get命中:get_hits
  • get未命中:get_misses
  • get命中率:get_hits / cmd_get
  • delete命中:delete_hits
  • delete未命中:delete_misses
  • delete命中率:delete_hits / (delete_hits + delete_misses)
  • set次数:cmd_set

2. slabs数值:

slabs的数值需要两个命令来查看,stats items来查看存储对象相关数据,stats slabs来查看slabs的相关数据。注意,以下数据都是以slab为单位的。

  • slab存储对象总量:stats_items.number 或 stats_slabs.used_chunks
  • slab中存储对象的最长存活时间:stats_items.age
  • slab中LRU回收对象次数:stats_items.evicted
  • slab的LRU占总LRU百分比:stats_items.evicted / stats.evictions
  • slab真实的总内存消耗(字节):stats_slabs.mem_requested
  • slab当前可用chunk数:stats_slabs.free_chunks + stats_slabs.free_chunks_end,为0表示slab已经满了
  • slab当前总page数:stats_slabs.total_pages
  • slab当前总chunk数:stats_slabs.total_chunks
  • get命中:stats_slabs.get_hits
  • get命中占全部命中总量的百分比:stats_slabs.get_hits / stats.get_hits
  • delete命中:stats_slabs.delete_hits
  • delete命中占全部命中总量的百分比:stats_slabs.delete_hits / stats.delete_hits
  • set次数:stats_slabs.cmd_set
  • set占全部set总量的百分比:stats_slabs.cmd_set / stats.cmd_set
  • slab当前内存浪费量(百分比):(stats_slabs.used_chunks * stats_slabs.chunk_size - stats_slabs.mem_requested) / stats_slabs.mem_requested

OK,大致上主要的数据就是这些,根据业务需求,可以将这些数据整理并图形化。have fun~