Skip to content

Memcached - 统计大小

Memcached - 使用 stats sizes 分析项大小

Section titled “Memcached - 使用 stats sizes 分析项大小”

stats sizes 命令提供缓存中当前存储的项大小的直方图。这是理解应用程序内存使用模式并微调 Memcached 的 slab allocator(内存块分配器)以实现最大效率的宝贵工具。

该命令很简单,不带任何参数。

stats sizes
stats sizes
STAT 96 15
STAT 120 4
END

输出是多行数据,每行包含两个数字。格式为 STAT <size> <count>。

  • size: 块的大小,以字节为单位。Memcached 会将实际项大小向上舍入到最接近的可用块大小。
  • count: 当前存储的、适合此块大小的项数量。

在上面的示例中,STAT 96 15 表示缓存中有 15 个项存储在 96 字节的块中。它们的实际大小可能在 1 到 96 字节之间(加上元数据开销)。

stats sizes 的主要用途是解决内存浪费问题。当存储一个项时,Memcached 会将其放入能容纳它的最小可用 slab class 中。如果您的项大小是 100 字节,但下一个可用的 slab class 的块大小是 120 字节,那么每个项您就浪费了 20 字节。这被称为内部碎片(Internal Fragmentation)。

通过分析生产负载下 stats sizes 的输出,您可以识别常见的项大小。如果您发现大量项(例如,介于 100-110 字节之间)都存储在 144 字节的 slab 中,您可以在启动时配置 Memcached,以创建更优化大小的 slab。

# 示例:启动 Memcached 并设置自定义 slab 大小为 112 字节
# 如果 `stats sizes` 显示许多项略大于 96 字节,可以这样做
memcached -o slab_chunk_max=112

根据此命令提供的实际数据微调 slab 大小是一种高级优化技术,可以显著提高内存效率,让您在相同的 RAM(内存)量中存储更多项。