首页/数据/数据库速查/MEMORY DOCTOR 与内存体检
Redis 运维与场景124 条

MEMORY DOCTOR 与内存体检

MEMORY DOCTOR 给出一句人类可读的诊断(如碎片率过高、maxmemory 未设、峰值逼近上限),适合巡检与告警附言。

数据库速查数据更新于 2026-10-13

MEMORY DOCTOR 是什么

MEMORY DOCTOR 是 Redis 的内存体检入口:它把若干指标综合成一句人类可读的结论,例如实例几乎没用到内存、碎片率过高、内存峰值逼近上限等,适合放进巡检脚本或告警附言。它只是线索而不是判决——碎片率高不代表必须重启,关键是结合 mem_fragmentation_ratio、maxmemory 配置与业务波动一起判断。

基本信息

适用版本Redis 4.0+ 提供 MEMORY 命令族
诊断MEMORY DOCTOR 输出一句结论
用量MEMORY USAGE key [SAMPLES n] 单键占用
统计MEMORY STATS 输出结构化内存指标
碎片率INFO memory 的 mem_fragmentation_ratio = RSS / used_memory
参考区间约 1.0-1.5 视为常见范围(跨版本与场景有差异)

典型使用场景

  • 日常巡检:把 DOCTOR 结论与关键指标一起采集,快速判断实例是否健康
  • 故障排查起点:内存告警时先看结论,再逐项展开指标
  • 扩容评估:用 MEMORY STATS 定位内存主要消耗在哪个部分
  • 大 key 排查:用 MEMORY USAGE 逐个确认可疑键的占用
  • 重启决策前核对:碎片率是否真的高到需要重启,而不是正常波动

体检示例

体检示例
MEMORY DOCTOR
# 可能的结论示例:
#   Hi Sam, this instance is empty or is using very little memory.
#   This instance has a peak of X GB and is currently using Y...
#   This instance has memory fragmentation ratio 1.7...

# 结构化指标
MEMORY STATS

# 关键碎片指标
INFO memory | grep -E 'used_memory_human|used_memory_peak_human|mem_fragmentation_ratio|mem_fragmentation_bytes|allocator_frag_ratio'

# 单键占用排查
MEMORY USAGE bigkey SAMPLES 5

指标读法

指标含义异常信号
used_memoryRedis 分配器统计的已用内存接近 maxmemory 时触发淘汰
used_memory_rss操作系统视角的常驻内存与 used_memory 差距大说明碎片多
mem_fragmentation_ratioRSS / used_memory长期高于 1.5 需关注
mem_fragmentation_bytes碎片绝对字节数几十字节级差异可忽略
maxmemory_policy淘汰策略未设置 maxmemory 时内存无上限风险
碎片率小于 1 也要注意:那说明使用了 swap 或内存被换出,性能会急剧下降;生产环境通常应关闭 swap 或把 vm.swappiness 调低。
不要因为一句 DOCTOR 结论就重启实例:碎片率在实际运行中会随写入模式波动,重启前应确认指标长期异常、已有迁移方案,且评估重启带来的缓存穿透与业务抖动。

易错点

  • 碎片率到 1.4 就紧急重启:仍在常见波动区间内,重启得不偿失
  • 把分配器碎片与操作系统碎片混为一谈:mem_fragmentation_ratio 与 allocator_frag_ratio 口径不同
  • 没设 maxmemory:内存无上限,先耗尽机器再被系统 OOM 杀掉
  • 只看 DOCTOR 结论不看明细:不同结论对应的处理动作完全不同,需展开指标确认
  • 用 MEMORY USAGE 精确统计十万个键:逐个查询开销大,应抽样结合大 key 扫描工具
  • 拿 Redis 视角的 used_memory 与宿主机空闲内存直接对比来判断余量:宿主机还要装下 fork、复制缓冲与其他进程,口径不同不能等同

数据来源与参考

  • Redis 官方文档: MEMORY DOCTOR
  • Redis 官方文档: 内存碎片

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌