Memcached - 统计项
Memcached - 使用 stats items 监控项统计
Section titled “Memcached - 使用 stats items 监控项统计”stats items 命令是一个关键的诊断工具,它提供每个 slab class(内存块类别)中存储的项的详细统计信息。这些统计数据对于监控缓存健康状况、性能调优和容量规划至关重要。
该命令通过 telnet 连接或 Memcached 客户端库执行。
stats itemsstats itemsSTAT items:1:number 1STAT items:1:age 73STAT items:1:evicted 0STAT items:1:evicted_nonzero 0STAT items:1:evicted_time 0STAT items:1:outofmemory 0STAT items:1:tailrepairs 0STAT items:1:reclaimed 0STAT items:1:expired_unfetched 0STAT items:1:evicted_unfetched 0END统计数据解读
Section titled “统计数据解读”每一行都提供了特定 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操作请求就已逐出的项数量。此处的数字较高可能表明您正在缓存从未使用过的数据。
实际应用:监控与警报
Section titled “实际应用:监控与警报”在生产环境中,您不应手动监控这些统计数据。相反,应将其集成到现代监控系统中。
- Prometheus: 使用 Memcached 导出器(例如
memcached_exporter)抓取这些指标并将其存储在 Prometheus 中。然后,您可以构建 Grafana 仪表板以可视化缓存健康状况随时间的变化。 - APM 工具: 诸如 Datadog、New Relic 或 Dynatrace 等服务通常具有内置的 Memcached 集成,可自动解析这些统计数据。
- 警报: 对关键指标设置警报。最重要的是
evicted。对持续的、非零逐出率设置警报将在性能严重影响用户之前通知您潜在的性能下降。