Memcached - 统计 Slab
Memcached - 使用 stats slabs 深入了解 Memcached
Section titled “Memcached - 使用 stats slabs 深入了解 Memcached”stats slabs 命令提供 Memcached 内存分配的底层视图。它显示每个 slab class 的详细统计信息,例如内存使用情况、块信息和命令计数器。这对于高级性能调优和调试内存相关问题至关重要。
此命令直接在 Memcached 服务器上运行。
stats slabsstats slabsSTAT 1:chunk_size 96STAT 1:chunks_per_page 10922STAT 1:total_pages 1STAT 1:total_chunks 10922STAT 1:used_chunks 1STAT 1:free_chunks 10921STAT 1:free_chunks_end 0STAT 1:mem_requested 71STAT 1:get_hits 0STAT 1:cmd_set 1STAT 1:delete_hits 0STAT 1:incr_hits 0STAT 1:decr_hits 0STAT 1:cas_hits 0STAT 1:cas_badval 0STAT 1:touch_hits 0STAT active_slabs 1STAT total_malloced 1048512END理解 Slab 统计数据
Section titled “理解 Slab 统计数据”输出分为按 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 分配更多页面。