首页/数据/Redis 进阶速查/mem_fragmentation_ratio 是什么意思
内存与管理99 条

mem_fragmentation_ratio 是什么意思

该比值为 used_memory_rss 除以 used_memory:大于 1 表示有碎片的可能,小于 1 通常意味着内存被换出或内存被压缩。

Redis 进阶速查数据更新于 2026-10-13

mem_fragmentation_ratio 的含义

mem_fragmentation_ratio 是 used_memory_rss 除以 used_memory:前者是操作系统看到的常驻内存,后者是分配器统计的逻辑数据用量。比值大于 1 说明进程占的物理内存多于数据本身,差额可能来自内存碎片、分配器留着复用的空闲页,或 fork 期间写时复制导致的额外占用;比值小于 1 通常意味着部分内存被换出到 swap,或系统做了内存压缩。它是信号不是结论,动手之前要结合碎片成因与系统内存状态一起看。

基本信息

计算方式used_memory_rss / used_memory
查看命令redis-cli INFO memory
常见区间1.0 到 1.5 之间偏正常
偏高的含义碎片或保留页较多,需进一步确认
小于 1 的含义疑似换出或内存压缩
深入工具MEMORY DOCTOR、MEMORY STATS
生效对象整个实例,不区分业务

典型使用场景

  • 内存水位巡检时判断 RSS 与逻辑用量差异是否在合理范围
  • 收到高碎片告警,先确认是一次性波动还是持续上升
  • 实例被容器 OOM 杀掉前,回看比值变化寻找线索
  • 长期运行实例的内存基线校准,识别缓慢碎片化
  • 评估是否值得开启主动碎片整理,需要量化当前碎片程度
  • 排查 ratios 小于 1 的实例是否存在 swap 与延迟抖动

查看与分析

查看与分析
redis-cli INFO memory | grep -E 'mem_fragmentation_ratio'   # 关键比值
redis-cli INFO memory | grep -E 'used_memory_rss|used_memory:'
redis-cli MEMORY DOCTOR      # 官方体检,给出是否建议处理
redis-cli MEMORY STATS       # 看分配器与各段的内存分布
free -m && swapon --show     # 系统层确认是否使用 swap
redis-cli MEMORY PURGE       # 请求分配器归还空闲页(有成本)

比值区间与处置

比值通常含义下一步
约等于 1RSS 与逻辑用量一致常态,无需动作
1.0 到 1.5有碎片但可控持续观察趋势
大于 1.5碎片或保留页明显结合 DOCTOR 判断是否整理或扩容
小于 1内存被换出或压缩查系统内存与 swap,别按碎片处理
比值只是信号不是结论:结合 MEMORY DOCTOR 的建议与系统内存水位一起看,再决定是整理、扩容还是不动。
fork 期间写时复制会让 RSS 短时上冲,持久化结束后自行回落,这时的比值尖峰不是碎片问题。
比值小于 1 时延迟往往比碎片更危险:换出与换入会把抖动带到命令执行路径上,优先级高于碎片治理。

易错点

  • 比值高就立刻做整理或重启,短时波动与 fork 影响被当成碎片问题
  • 比值小于 1 仍按碎片处理,真正的问题在系统内存与 swap
  • 只看单次采样值,忽略持续上升的趋势,错过缓慢碎片化
  • 把 MEMORY PURGE 当常规操作频繁执行,带来额外开销却不解决根因
  • 实例长期无人巡检,直到容器 OOM 才发现 RSS 已远超逻辑用量

数据来源与参考

  • Redis 官方文档:内存碎片概念说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌