1. 简介

在本文中,我们将探讨百分位数(Percentile)及其在网络延迟和应用响应时间分析中的应用。

2. 百分位数简介

百分位数是一个值,它大于或等于数据集中一定比例的观测值。

举个例子,如果某人在 GRE 考试中成绩位于 95th 百分位,意味着他的成绩超过了 95% 的考生。

百分位数常用于描述一个值在整体数据中的相对位置。如下图所示,对于一个均值 μ = 720、标准差 σ = 30 的正态分布,我们标出了 95th 和 99th 百分位数:

The 99th Percentile

图中显示:

  • 95th 百分位数 ≈ 769.3
  • 99th 百分位数 ≈ 789.8

更正式地讲,第 k 个百分位数(k=1,2,…,100)表示该值大于或等于 100% 数据中的 k%。

2.1. 百分位数 vs 百分比

  • 百分比(Percentage):表示一个值占整体的比例,比如 80 分占满分的 80%
  • 百分位数(Percentile):表示一个值在数据集中的相对位置,比如 80 分位于 90th 百分位,意味着 90% 的人分数低于 80

3. 延迟的百分位数

延迟(Latency) 是指数据包从源点传输到目标点所需的总时间。通常用于衡量网络服务或应用接口的响应性能,单位多为毫秒(ms)。

延迟越低,用户体验越好。

3.1. P99 延迟

P99(99th Percentile Latency)是指 99% 的请求延迟都小于等于该值。

例如,如果我们说某个 HTTP 接口的 P99 延迟是 2ms,意味着 99% 的请求响应时间 ≤ 2ms,只有 1% 的请求延迟 > 2ms。

3.2. 为什么选择 P99?

传统的统计指标如平均值(mean)、中位数(median)、最大值(max)等,在衡量系统性能时各有局限:

  • 平均值和中位数可能掩盖极端值(outliers)
  • 最大值可能只是一个异常值,不具备代表性

P99 更能反映系统在极端负载下的表现,适合用于性能监控和报警设置,因为它:

  • 对异常值不敏感(比最大值稳定)
  • 覆盖了绝大多数用户的真实体验

所以,优化 P99 延迟,本质上是在优化用户体验的“最差情况”。

4. 百分位数计算方法

假设我们有一个包含 n 个延迟值的数据集 d。

计算 P99 的步骤如下:

  1. 将数据集按升序排序

  2. 计算 P99 对应的排名:

    $$ Rank_{p} = \lceil \frac{p}{100} \times n \rceil $$

  3. 取排序后数组中该排名对应的值:

    $$ Percentile_{p} = d[Rank_{p}] $$

4.1. 示例

假设某班 15 名学生的测验成绩如下:

89, 92, 34, 45, 67, 75, 37, 55, 66, 44, 98, 99, 77, 72, 39

排序后为:

排名 成绩
1 34
2 37
3 39
4 44
5 45
6 55
7 66
8 67
9 72
10 75
11 77
12 89
13 92
14 98
15 99

计算 P90:

$$ Rank_{90} = \lceil \frac{90}{100} \times 15 \rceil = \lceil 13.5 \rceil = 14 $$

$$ Percentile_{90} = d[14] = 98 $$

因此,90% 的学生成绩 ≤ 98。

5. 百分位数与置信区间

当我们从一个更大的数据集中抽取样本时,样本的 P99 可能与整体数据集的 P99 有偏差。样本越大,估计越准确。

为了衡量这种偏差,我们可以构建 置信区间(Confidence Interval, CI),即一个包含真实 P99 的范围。例如,80% 置信区间 [a, b] 表示:如果我们重复抽样并构建 CI,大约 80% 的区间会包含真实的 P99。

5.1. 使用顺序统计量构建 CI

设排序后的延迟数据为:

$$ d_1 \leq d_2 \leq \dots \leq d_n $$

P99 对应的排序位置为 r,我们希望找到两个位置 i < r 和 j > r,使得:

$$ P(d_i \leq P99 \leq d_j) \geq q $$

其中 q 是我们希望达到的置信水平(如 90% 或 95%)。通过这种方式,我们可以估算实际延迟落在 [d_i, d_j] 区间内的概率。

注意:当样本量足够大时,可以使用正态分布近似来简化 CI 的计算;但如果样本量较小,建议使用精确的二项分布方法。

6. 总结

  • 百分位数帮助我们更直观地理解系统性能的真实分布
  • P99 是衡量网络延迟和接口响应时间的重要指标
  • 它能有效反映系统在极端负载下的表现,是性能优化和监控的关键指标
  • 在实际应用中,可以结合置信区间来评估样本估计的可靠性

使用 P99 进行性能分析,可以避免被平均值误导,也能更准确地识别系统瓶颈和异常行为。


原始标题:What’s the P99 Latency?