启航加速器延迟探测机制:20 秒一轮,4 条并发流,为什么还要剔除 P95
一个“平均延迟 30 毫秒”的节点,可能有一成的时间跑到 80 毫秒。启航加速器的调度系统不看平均值,看分位数。8 月 29 日,调度组公开了这套探测机制的细节与 24 小时采样结果。
延迟数据很容易被修饰。取平均值,几个超时样本就能把数字拉高;取最小值,看起来漂亮但毫无意义。用户真正在意的是“难的时候有多难”,对应到统计上就是 P90 与 P95。
采样:并发四流,二十秒一轮
启航加速器对每条线路每 20 秒发起一轮探测,同时并发 4 条探测流,分别走 ICMP、UDP 443 与应用层探测。之所以并发四流,是为了区分“链路问题”和“单个探测包丢失”:四条流里三条正常、一条超时,更可能是偶发丢包;四条全超时才是链路异常。
每轮采集完成后,先算中位数,再剔除 P95 以上的样本,剩下的进入评分。评分公式是 0.6×RTT + 0.3×丢包惩罚 + 0.1×抖动系数。丢包惩罚不是线性的:丢包从 0 到 1% 加 4 分,1% 到 3% 加 12 分,超过 3% 直接标记为“拥挤”,只允许手动选择。
| 参数 | 取值 | 作用 |
|---|---|---|
| 探测周期 | 20 秒 | 兼顾实时性与开销 |
| 并发流数 | 4 | 区分偶发丢包与链路故障 |
| 样本剔除 | P95 以上 | 排除突发拥塞干扰 |
| 切换阈值 | 领先 12% | 避免两条相近线路来回抖 |
| 摘除条件 | 连续 2 轮失败 | 3 秒内移出池 |
| 回池条件 | 连续 30 分钟稳定 | 防止刚恢复就推给用户 |
四十三万个样本的分位数
香港 HK-04 在 24 小时内采集了 43.2 万个有效样本。P50 为 28 毫秒,P75 为 33 毫秒,P90 为 41 毫秒,P95 为 49 毫秒,P99 为 78 毫秒。这组数据说明:日常体感落在 28 到 41 毫秒之间,长尾出现在晚高峰与跨境拥塞时段,但 99% 的样本仍在 78 毫秒以内。
把同一时段的其他线路放在一起看,差异更清楚。东京 P95 为 68 毫秒,新加坡 91 毫秒,洛杉矶 187 毫秒,法兰克福 244 毫秒。分位数越低,说明线路越“平”——这对视频会议比对下载更重要,因为会议对抖动的容忍度极低。
| 线路 | P50 | P90 | P95 | P99 | 样本量 |
|---|---|---|---|---|---|
| 香港 HK-04 | 28 | 41 | 49 | 78 | 43.2 万 |
| 东京 JP-02 | 46 | 58 | 68 | 112 | 42.8 万 |
| 新加坡 SG-03 | 62 | 78 | 91 | 146 | 41.6 万 |
| 洛杉矶 US-07 | 138 | 161 | 187 | 268 | 40.9 万 |
| 法兰克福 DE-01 | 196 | 221 | 244 | 331 | 38.4 万 |
为什么阈值是 12%
切换太灵敏会导致“跳线”:两条评分接近的线路轮流被选中,每次切换都要重建会话,用户感知为卡顿。切换太迟钝则会在一条变差的线路上硬撑。我们拿三个月的线上数据回放,试了 5%、12%、20% 三档阈值:5% 时每小时平均切换 9.4 次,用户投诉集中在“频繁断”;20% 时切换 0.8 次,但平均延迟抬升 14 毫秒;12% 时切换 2.1 次,延迟几乎无损。最终选 12%。
“调度系统最怕的不是选错一次,而是选来选去。”调度组的负责人在技术分享里说,“用户能忍一条 60 毫秒的线,忍不了一条 30 毫秒和 70 毫秒之间反复跳的线。”
客户端看板与探测的关系
客户端显示的数字来自本机探测,不是服务端回传。这带来一个好处:断网瞬间仍能看到最后一次有效采样,便于判断是本地网络问题还是线路问题。代价是不同用户看到的数值会有差异,比如广东电信看香港是 24 毫秒,黑龙江联通可能是 46 毫秒——这是物理距离决定的,不是数据造假。
下一步,探测周期会从 20 秒收到 10 秒,同时增加对目标站点的应用层探测,而不只是到出口的链路探测。区别在于:链路 30 毫秒不等于访问某个站点就快,中间还可能有一次 CDN 回源。
如果你对数字敏感,可以在核心功能页看到评分公式的完整说明;想自己验证,下载客户端后在设置里打开“详细探测日志”,每一轮的四个样本都会打印出来。
用户评论(5)
P99 78ms 这个数挺实在,没有拿 P50 出来吹。
12% 阈值那段很有说服力,之前用别家一小时跳十几次线。
建议客户端也显示 P95,只有当前 RTT 看不出长尾。
黑龙江联通看香港 46ms,跟文中说的一致,物理距离没办法。
应用层探测如果上了会更准,现在有时链路好但站点慢。