新版灰度 10%,看板只展示平均延迟 320ms,和旧版几乎一样,实际新版 P99 从 900ms 涨到 2.7 秒,直到用户投诉才有人翻分位数据。
排查方向其实有限,先把可能性排一排。看板只有均值,长尾被平均掉;分位桶边界太粗,2 秒到 5 秒落进同一个桶;灰度与基线的流量结构不同,均值不可比;告警阈值按全站设置,单版本涨了也不触发。
先把分位曲线按版本拆开
python p99.py --metric latency --group version --window 30m --quantiles 0.5,0.95,0.99
细化直方图桶边界
buckets = [0.1,0.2,0.5,1,2,3,5,10]
给单版本设相对阈值告警
python alert.py --metric latency_p99 --compare baseline --ratio 1.5 --version canary
回滚后确认分位恢复
python p99.py --metric latency --group version --window 10m
同样的操作我在测试机上先走了一遍,线上只做验证过的部分。
这台环境是别人交接的,不少默认值被动过,只能一项项核。
恢复的判定其实很直接。新版 P99 的独立曲线可见,超过基线 1.5 倍时十分钟内触发告警,回滚后分位回到 900ms 附近。
提醒一点。均值在灰度阶段几乎没有判断力,P95 和 P99 必须按版本分开看,告警也要按版本相对基线配。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
