latency-monitor-threshold 是什么
latency-monitor-threshold 以毫秒为单位设置延迟监控阈值,默认 0 表示关闭。开启后 Redis 按事件类别记录超过阈值的延迟尖峰,事件包括命令执行、fork、过期循环、淘汰循环、AOF 刷盘等,可用 LATENCY 命令族查询。它属于事件级观测,与命令级百分位统计是两个不同的开关。
基本信息
| 配置项 | latency-monitor-threshold |
|---|---|
| 单位 | 毫秒 |
| 默认值 | 0(关闭) |
| 数据量 | 每类事件只保留最近若干条(默认 160 条) |
| 查询命令 | LATENCY LATEST / HISTORY / RESET / DOCTOR |
| 区别 | 与 latency-tracking 不同,后者产出命令级百分位 |
典型使用场景
- 偶发卡顿排查:业务报警延迟毛刺但慢日志为空时,用它看是否发生在 fork 或过期环节
- 持久化评估:对照 RDB 或 AOF 重写时间点判断尖峰来源
- 上线观测:变更窗口内开启,观察新版本是否引入新的延迟事件
- 容量验证:压测时开启,看各类事件的响应是否还在容忍范围内
- 例行健康检查:低阈值长期开启,配合告警做趋势观察
开启与查询
开启与查询
redis-cli CONFIG SET latency-monitor-threshold 100 # 记录 100 毫秒以上的事件
redis-cli LATENCY LATEST # 各类事件的最新值与峰值
redis-cli LATENCY HISTORY fork # 看 fork 事件的历史尖峰
redis-cli LATENCY DOCTOR # 给出人类可读的建议
redis-cli LATENCY RESET # 清空历史,便于观察新窗口
redis-cli CONFIG SET latency-monitor-threshold 0 # 排查结束后关闭常见事件类别
| 事件 | 含义 | 常见来源 |
|---|---|---|
| command | 慢命令执行 | 复杂命令或大键操作 |
| fork | 创建子进程耗时 | RDB 保存、AOF 重写 |
| expire-cycle | 过期键清理循环 | 集中过期导致的批量清理 |
| eviction-cycle | 内存淘汰循环 | 内存贴线运行 |
| aof-fsync-always | AOF 每写刷盘耗时 | 磁盘抖动 |
阈值要设在业务能感知的量级(例如 50 到 100 毫秒):设得太大抓不到毛刺,设得太小则充满噪声,需要按自己的容忍度校准。
事件类别的名称是英文枚举,理解含义比死记名称重要:fork 类事件几乎都指向持久化,而不是网络问题。
版本差异要留意:7.0 起新增的命令级延迟跟踪(latency-tracking)与它产出百分位,是另一套开关,两者可以同时开启,互不替代。