Skip to content

Memcached - 统计项

Memcached - 使用 stats items 监控项统计

Section titled “Memcached - 使用 stats items 监控项统计”

stats items 命令是一个关键的诊断工具,它提供每个 slab class(内存块类别)中存储的项的详细统计信息。这些统计数据对于监控缓存健康状况、性能调优和容量规划至关重要。

该命令通过 telnet 连接或 Memcached 客户端库执行。

stats items
stats items
STAT items:1:number 1
STAT items:1:age 73
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
END

每一行都提供了特定 slab class(内存块类别)的信息,通过 items: 后面的数字标识。例如,items:1:... 指的是 slab class 1。

  • number <count>: 此 slab class 中当前存储的项数量。
  • age <seconds>: LRU(最近最少使用)队列中最旧的、未过期项的“年龄”(秒数)。较高的 age 值表明缓存健康稳定。
  • evicted <count>: (关键指标) 因 slab class 已满而从缓存中移除的有效项数量,以便为新项腾出空间。evicted 计数持续增加强烈表明您需要为 Memcached 分配更多内存。
  • evicted_nonzero <count>: 对于过期时间不为零的项,发生逐出的次数。
  • evicted_time <seconds>: 自此 slab class 上次有项被逐出以来的时间(秒数)。
  • outofmemory <count>: 此 slab class 因内存页不足而导致写入操作失败的次数。这通常发生在逐出之前。
  • reclaimed <count>: 已过期并被 LRU crawler(LRU 爬虫)回收以释放内存的项数量。
  • expired_unfetched <count>: 未被 get 操作请求就已过期的项数量。
  • evicted_unfetched <count>: 未被 get 操作请求就已逐出的项数量。此处的数字较高可能表明您正在缓存从未使用过的数据。

在生产环境中,您不应手动监控这些统计数据。相反,应将其集成到现代监控系统中。

  • Prometheus: 使用 Memcached 导出器(例如 memcached_exporter)抓取这些指标并将其存储在 Prometheus 中。然后,您可以构建 Grafana 仪表板以可视化缓存健康状况随时间的变化。
  • APM 工具: 诸如 Datadog、New Relic 或 Dynatrace 等服务通常具有内置的 Memcached 集成,可自动解析这些统计数据。
  • 警报: 对关键指标设置警报。最重要的是 evicted。对持续的、非零逐出率设置警报将在性能严重影响用户之前通知您潜在的性能下降。