看尾部延迟,而不只看平均值

平均值把整个分布压缩成一个看起来舒服的数字。但生产环境中的延迟,几乎从来都不舒服,也不会均匀分布。

假设 99 个请求在 40 毫秒内完成,另一个请求花了 4 秒。平均延迟约为 80 毫秒。这个数字几乎不能代表任何一个请求:大多数用户等待了它的一半,而那位倒霉的用户则多等了 50 倍。

保留分布信息

至少要同时跟踪几个百分位数和请求量:

指标数值
P5040 ms
P9558 ms
P994.0 s
请求数100

百分位数也需要足够的样本量。用很短的时间窗口计算 P99,结果大多只是在讲一个请求的故事;因此应保留直方图,并比较流量相近的时间段。

找到拖慢尾部的那群请求

按接口、区域、载荷大小、缓存状态、依赖服务和重试次数拆分慢请求。尾部延迟往往只影响一部分请求,把所有数据汇总后,这部分就会消失。

优化平均值会优先奖励常见路径。可靠性工作则从追问“还有谁在等待?”开始。