Skip to content

Memcached - 统计 Slab

Memcached - 使用 stats slabs 深入了解 Memcached

Section titled “Memcached - 使用 stats slabs 深入了解 Memcached”

stats slabs 命令提供 Memcached 内存分配的底层视图。它显示每个 slab class 的详细统计信息,例如内存使用情况、块信息和命令计数器。这对于高级性能调优和调试内存相关问题至关重要。

此命令直接在 Memcached 服务器上运行。

stats slabs
stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 1
STAT 1:free_chunks 10921
STAT 1:free_chunks_end 0
STAT 1:mem_requested 71
STAT 1:get_hits 0
STAT 1:cmd_set 1
STAT 1:delete_hits 0
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 0
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END

输出分为按 slab 统计(前缀为 slab_id:)和全局统计。

每 Slab 指标(例如,Slab Class 1)

Section titled “每 Slab 指标(例如,Slab Class 1)”
  • chunk_size: 此 slab class 中每个块的大小,以字节为单位。
  • chunks_per_page: 单个内存页(通常为 1MB)中可容纳的块数量。
  • total_pages: 分配给此 slab class 的内存页总数。
  • used_chunks 与 free_chunks: 此比例显示 slab 的利用率。如果 free_chunks 持续较低,则此 slab 处于压力之下。
  • mem_requested: 存储在此 slab 中的用户数据总字节数,不包括元数据开销。
  • get_hits、cmd_set、delete_hits 等:特定于此 slab 的命令计数器。这些对于识别哪些项大小被最频繁访问(即“热”slab)非常有用。
  • active_slabs: 已初始化且包含至少一个项的 slab class 数量。
  • total_malloced: Memcached 进程从操作系统分配的总内存量,以字节为单位。

使用 Slab 统计数据进行性能调优

Section titled “使用 Slab 统计数据进行性能调优”

通过结合 stats slabs 和 stats items 的信息,您可以全面了解缓存性能。

考虑以下场景:您从 stats slabs 中观察到 slab class 7 具有非常高的 get_hits。然后您检查 stats items,发现 items:7:evicted 正在迅速增加。这是一个明显的瓶颈。它告诉您,由于该特定 slab class 中的内存压力,您最常访问的项正在被逐出。解决方案是增加 Memcached 的总可用内存,这将使其能够为需求量大的 slab class 7 分配更多页面。