延迟指标定义:P99、P999、平均延迟、最大延迟、抖动

做交易系统压测,最核心的就是看延迟。说白了,你的策略再牛,数据到不了位,一切都是白搭。

我个人习惯,拿到压测报告第一眼先看延迟指标。不看这个,你根本不知道你的系统在真实行情下能扛多久。今天咱们就把这几个关键指标掰开揉碎讲清楚。

平均延迟(Average Latency)

平均延迟,就是所有请求延迟的算术平均值。公式很简单:

平均延迟 = (延迟1 + 延迟2 + ... + 延迟N) / N

嗯,这里要注意。平均延迟是最容易骗人的指标。我在项目中遇到过,某家厂商号称平均延迟只有50微秒,结果一上生产环境,P99直接飙到500微秒。为什么?因为平均延迟被大量低延迟请求拉低了,那些偶尔出现的毛刺根本体现不出来。

避坑指南: 我曾经只盯着平均延迟看,结果线上出了好几次问题。后来我学乖了——平均延迟只能当参考,不能当决策依据。

最大延迟(Max Latency)

最大延迟,就是所有请求中延迟最高的那个值。公式:

最大延迟 = max(延迟1, 延迟2, ..., 延迟N)

这个指标看起来直观,但实际用处有限。为什么?因为一次GC暂停、一次网络抖动,就可能把最大延迟拉到几毫秒甚至几十毫秒。你想想看,这个值其实是个异常值,不代表系统常态。

我记得有一次压测,最大延迟显示2.3毫秒,团队里有人慌了。后来一查,是某次日志刷盘导致的。去掉这个异常点,其他请求都在100微秒以内。所以,最大延迟我一般只看趋势,不看绝对值。

P99 与 P999 百分位延迟

这才是交易系统的核心指标。P99表示99%的请求延迟都低于这个值,P999同理,是99.9%的请求。

计算公式:

P99 = 排序后第 ceil(N * 0.99) 个位置的延迟值
P999 = 排序后第 ceil(N * 0.999) 个位置的延迟值

说白了,就是把所有延迟从小到大排序,然后取第99%或99.9%位置的值。

为什么交易系统看重P99和P999?
因为交易场景下,1%甚至0.1%的慢请求,就可能造成滑点、错过行情、甚至爆仓。平均延迟再低,只要那0.1%的请求慢了,你的策略就可能在关键时刻掉链子。

我建议,做交易数据总线压测时,至少要看P99。如果做高频交易,P999也必须盯。我在项目中见过一个案例:某系统平均延迟30微秒,P99是80微秒,看起来不错。但P999是1.2毫秒——这意味着每1000笔交易里,就有1笔延迟超过1毫秒。对于高频策略来说,这1毫秒可能就是生与死的区别。

抖动(Jitter)

抖动,也叫延迟方差。它衡量的是延迟的波动程度。公式:

Jitter = 标准差(延迟1, 延迟2, ..., 延迟N)
或者更简单的:Jitter = P99 - P50

我个人习惯用P99减去P50来估算抖动。为什么?因为计算简单,而且直观。如果P50是20微秒,P99是100微秒,那抖动就是80微秒。这个值越大,说明系统越不稳定。

你想想看,一个系统如果抖动很大,即使平均延迟很低,你的策略也很难做。因为你不知道下一笔数据到底什么时候到。做量化交易,确定性比低延迟更重要。

我的经验: 抖动控制在P99的20%以内,算合格。超过50%,就要排查了。常见原因:GC暂停、锁竞争、网络中断、磁盘IO抖动。

指标对比一览

指标 含义 适用场景 注意点
平均延迟 所有请求延迟的均值 粗略评估 容易被异常值掩盖
最大延迟 所有请求延迟的最大值 排查异常 受单点异常影响大
P99 99%请求低于此值 核心指标 交易系统必看
P999 99.9%请求低于此值 高频交易 对极端值敏感
抖动 延迟的波动程度 稳定性评估 反映系统确定性

知识体系图

下面这张图,帮你理清这几个指标的关系:

延迟指标体系 延迟指标 平均延迟 所有请求的算术均值 最大延迟 所有请求的最大值 P99 99%请求低于此值 P999 99.9%请求低于此值 抖动 延迟波动程度 核心原则:交易系统优先看P99和抖动 平均延迟和最大延迟仅作参考,不能作为决策依据

实战中的选择建议

说了这么多,到底该看哪个指标?我根据经验给个参考:

  • 日常监控:盯P99和抖动。P99超过阈值就报警,抖动变大说明系统不稳定。
  • 压测报告:P99、P999、抖动三个一起看。P999能暴露极端情况下的问题。
  • 问题排查:先看最大延迟,定位异常点。然后看抖动,判断是偶发还是系统性问题。
  • 性能优化:盯着P50和P99的差距。差距越小,说明系统越稳定。
一句话总结: 平均延迟是面子,P99是里子,抖动是底子。做交易系统,里子和底子都得硬。

好了,这些指标的定义和计算公式就讲到这里。记住,指标本身不复杂,难的是怎么用它们来指导你的压测和优化。下一节咱们会聊怎么搭建压测环境,到时候这些指标就能派上用场了。

专注资料整理