性能
看尾部延迟,而不只看平均值
平均值把整个分布压缩成一个看起来舒服的数字。但生产环境中的延迟,几乎从来都不舒服,也不会均匀分布。
假设 99 个请求在 40 毫秒内完成,另一个请求花了 4 秒。平均延迟约为 80 毫秒。这个数字几乎不能代表任何一个请求:大多数用户等待了它的一半,而那位倒霉的用户则多等了 50 倍。
保留分布信息
至少要同时跟踪几个百分位数和请求量:
| 指标 | 数值 |
|---|---|
| P50 | 40 ms |
| P95 | 58 ms |
| P99 | 4.0 s |
| 请求数 | 100 |
百分位数也需要足够的样本量。用很短的时间窗口计算 P99,结果大多只是在讲一个请求的故事;因此应保留直方图,并比较流量相近的时间段。
找到拖慢尾部的那群请求
按接口、区域、载荷大小、缓存状态、依赖服务和重试次数拆分慢请求。尾部延迟往往只影响一部分请求,把所有数据汇总后,这部分就会消失。
优化平均值会优先奖励常见路径。可靠性工作则从追问“还有谁在等待?”开始。
