延迟体检报告
LATENCY DOCTOR 把已记录的延迟事件(command、fork、expire-cycle 等)汇总成人话,并给出成因判断与操作建议。前提是延迟监控已开启,也就是 latency-monitor-threshold 大于 0,否则事件集为空,输出会显得非常空泛。阈值本身也要合适:设得太低会把正常波动一并记进来,报告里全是无关事件,判断反而更费劲。它适合在用 LATENCY LATEST 看到事件之后作为第二站使用。
基本信息
| 命令 | LATENCY DOCTOR |
|---|---|
| 输出 | 可读性诊断文本与建议 |
| 定位 | 延迟排查第二站,起点是 LATENCY LATEST |
| 前提条件 | latency-monitor-threshold 已设置且大于 0 |
| 建议性质 | 参考性建议,涉及持久化等可靠性权衡 |
典型使用场景
- 快速定性:拿到一堆延迟事件后先了解大致成因
- 工单交接:把可读结论直接贴进工单,减少解释成本
- 变更核对:调整后重新执行,对比结论是否变化
- 入门学习:理解各类延迟事件的成因分类
- 交叉印证:与慢日志、系统层指标互相印证,避免单一结论
- 阈值核对:latency-monitor-threshold 决定记录门槛,设得过低会记下大量无关事件
- 影响面判断:结合 commandstats 看事件集中的命令是否正是业务主力
使用步骤
使用步骤
redis-cli CONFIG GET latency-monitor-threshold # 先确认监控阈值已开启
redis-cli LATENCY LATEST # 看当前有哪些事件
redis-cli LATENCY DOCTOR # 生成诊断报告
redis-cli LATENCY HISTORY command # 需要细节时看单事件历史
redis-cli LATENCY RESET # 修复后重置基线报告里的常见事件
| 事件 | 含义 | 常见成因 |
|---|---|---|
| command | 命令执行耗时超过阈值 | 大 key 操作、复杂命令、慢命令 |
| fork | 创建子进程的耗时 | 内存大、页表大、宿主资源竞争 |
| expire-cycle | 过期清理周期超时 | 集中过期、键数量大 |
| eviction-cycle | 淘汰周期超时 | 内存紧张、淘汰频繁 |
报告里的建议要结合业务确认:与持久化相关的建议涉及可靠性权衡,不能照着执行而不评估影响。
没开启延迟监控时输出会非常空泛,先确认阈值配置,否则容易误以为实例毫无问题。