Memcached - 统计大小
Memcached - 使用 stats sizes 分析项大小
Section titled “Memcached - 使用 stats sizes 分析项大小”stats sizes 命令提供缓存中当前存储的项大小的直方图。这是理解应用程序内存使用模式并微调 Memcached 的 slab allocator(内存块分配器)以实现最大效率的宝贵工具。
该命令很简单,不带任何参数。
stats sizesstats sizesSTAT 96 15STAT 120 4END输出是多行数据,每行包含两个数字。格式为 STAT <size> <count>。
size: 块的大小,以字节为单位。Memcached 会将实际项大小向上舍入到最接近的可用块大小。count: 当前存储的、适合此块大小的项数量。
在上面的示例中,STAT 96 15 表示缓存中有 15 个项存储在 96 字节的块中。它们的实际大小可能在 1 到 96 字节之间(加上元数据开销)。
实际应用:优化内存块分配
Section titled “实际应用:优化内存块分配”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(内存)量中存储更多项。