为什么平均值会误导:p99 延迟才是用户真实感受

发布: (2025年12月30日 GMT+8 08:04)
2 min read
原文: Dev.to

Source: Dev.to

Introduction

大多数性能仪表盘看起来都不错:

  • Average latency: low
  • CPU: stable
  • Memory: healthy

然而用户仍然抱怨“应用感觉很慢”。这并不是谜——而是度量指标的问题。

The problem with averages

想象这样一个系统:

  • 99 % 的请求在 10 ms 内完成
  • 1 % 的请求耗时 1000 ms

平均延迟约为 20 ms,在图表上看起来很棒。
但每 100 位用户中就有 1 位会经历整整一秒的停顿。这不是边缘案例,而是真实的用户体验。

Why percentiles matter

  • p50 – 告诉你典型情况
  • p90 / p95 – 显示波动性上升
  • p99 – 展示系统真正崩溃的地方

如果你的 p99 很差,系统的感受也会很差——即使平均值看起来完美。

Variance and jitter

高方差往往比整体慢的性能更具破坏性。

  • 一个稳定的 40 ms 系统感觉比在 5 ms200 ms 之间跳动的系统更快。
  • 这种可变性(抖动)会导致 UI 卡顿、音频故障和帧丢失。

Latency Lens – a lightweight analysis tool

我构建了 Latency Lens,一个专注于尾部行为而非平均值的小型 CLI 工具。它提供:

  • p50 / p90 / p95 / p99
  • 抖动(标准差和 MAD)
  • 峰值检测
  • 最坏情况时间窗口

Installation

  • GitHub:
  • PyPI:

How to diagnose “slow feeling”

如果用户说你的系统感觉慢:

  1. 不要看平均值
  2. 检查 p99
  3. 查看方差
  4. 寻找随时间的峰值

这通常就是事实所在。

Back to Blog

相关文章

阅读更多 »

握手:现代 API 的隐形成本

发生了什么?当在本地 API 响应时间为 20 ms 时,日志没有指向瓶颈,数据库已经优化,代码也很干净。准备好进行…