为什么看百分位
平均值会掩盖长尾,延迟要看百分位:p50 反映日常水平,p99 代表大多数用户碰到的最差情况,p999 暴露极端尾部。目标档位按业务容忍度选:接口级 SLA 常盯 p99,对个别请求也敏感的场景还要看 p999 与超阈值次数。百分位必须与统计窗口配对,短窗口的 p999 波动很大。
基本信息
| p50 | 一半请求快于这个值,代表日常水平 |
|---|---|
| p99 | 尾部体验的主力档位,常作为 SLA 目标 |
| p999 | 极端尾部,适合看趋势而不是单点 |
| 统计窗口 | 窗口越短波动越大,需与业务周期匹配 |
| 数据来源 | INFO latencystats(需先开启延迟监控)与客户端侧观测 |
典型使用场景
- 接口 SLA:把 p99 作为对外承诺档位,比平均值更贴近体验
- 容量评估:扩容前后对比同一档位,判断尾部是否改善
- 排查定位:p99 抬高而 p50 正常,通常指向排队或偶发阻塞
- 压测报告:把分位表归档,变更前后对照同一档位
- 告警设计:用分位与超阈值次数组合,避免被单点极值触发
- 排障交叉验证:分位异常时用慢日志取样本,确认是命令本身还是排队导致
取分位与环境对照
取分位与环境对照
redis-cli INFO latencystats # 分命令延迟分位
redis-cli --latency-history -i 5 # 时间序列,看分位随时间波动
redis-cli INFO commandstats # 平均耗时作为参照
redis-cli LATENCY LATEST # 延迟事件的最近与最大耗时
redis-cli LATENCY HISTORY command # 单个事件的历史序列档位读法
| 档位 | 回答的问题 | 注意 |
|---|---|---|
| p50 | 常态有多快 | 掩盖尾部,不能单独使用 |
| p99 | 多数用户最差到什么程度 | SLA 常用档位 |
| p999 | 极端尾部有多差 | 波动大,看趋势 |
| 平均值 | 整体均值 | 被尾部稀释,仅作参照 |
百分位与统计窗口必须配对:短窗口百分位跳动剧烈,用几分钟的数据判断趋势容易得出相反结论,至少覆盖一个完整业务周期。
只报平均延迟会把尾部问题藏进报表:平均值改善而 p99 没动,用户感受不会变好,据此宣布优化成功属于自我安慰。