内存排查一页清单
内存问题按清单推进,保证每一步都有证据:先看 INFO memory 的总量与构成 → 用 MEMORY DOCTOR 判断问题类型 → 排查客户端与复制缓冲这类非数据占用 → 抽查大键与键增长速度 → 评估碎片与系统侧内存(含 swap)→ 最后做治理或扩容决策。
排查顺序
| 第 1 步 | 总量与构成,看 INFO memory |
|---|---|
| 第 2 步 | 问题类型判断,看 MEMORY DOCTOR |
| 第 3 步 | 非数据占用,看客户端与复制缓冲 |
| 第 4 步 | 数据侧,大键与键增长 |
| 第 5 步 | 系统侧,碎片率、rss 与 swap |
| 第 6 步 | 治理或扩容,并留存时间线 |
每步的判读要点
| 步骤 | 命令 | 异常信号 |
|---|---|---|
| 总量与构成 | INFO memory | used_memory 贴近 maxmemory,或数据集占比异常 |
| 问题类型 | MEMORY DOCTOR | 给出碎片、淘汰或大键方向的提示 |
| 非数据占用 | CLIENT LIST | 少数连接的缓冲字段明显突出 |
| 数据侧 | MEMORY USAGE 与 --bigkeys | 单个键占用异常突出 |
| 系统侧 | mem_fragmentation_ratio 与 free -m | 碎片率高,swap 被使用 |
| 淘汰与命中 | INFO stats | evicted_keys 增长、命中率下降 |
一条龙取证
一条龙取证
redis-cli INFO memory
redis-cli MEMORY DOCTOR
redis-cli MEMORY STATS | head -20
redis-cli CLIENT LIST | head -10
redis-cli --bigkeys
redis-cli INFO stats | grep -E 'evicted_keys|keyspace_hits|keyspace_misses'典型使用场景
- 值班响应:告警后按顺序走一遍,避免凭经验跳步
- 新实例体检:上线前建立内存构成基线
- 大促前巡检:确认水位、淘汰与缓冲都在预期范围
- 复盘取证:用同一清单收集材料,结论可复现
- 交接沟通:把结论与证据一起交付,不依赖个人记忆
判读要点补充
- 数据集占比正常而总量偏高时,优先查客户端与复制缓冲
- 淘汰计数持续增长说明策略已在删数据,需确认是否符合预期
- 碎片率高且 rss 远大于 used_memory 时,再评估整理或迁移
- 系统侧 swap 被使用,意味着内存压力已经溢出到磁盘
- 每一步的结论都要连同命令输出一起留存
清单的价值在于每步都留下证据:把命令输出与当时的结论记进工单,复盘时能还原判断链条,不必依赖记忆重建现场。
多数内存问题最终落在三处:缓冲(客户端与复制)、大键、内存碎片;数据集总量正常却告警时,优先查前两类。