阿克森云登录 / 注册English/中文/cn繁体/tw

测量方法论:样本量、时段、百分位与可复现性

测量口径的白皮书:样本量怎么定、时段怎么选、百分位怎么读、可复现性怎么保证。与本站测速工具的公开方法论同口径——任何数字发布前先过这四关,无据数字一律标待实测。

· AxionServe 编辑部 · 工具中心

「我们线路很好」和「P95 延迟 52ms,晚高峰劣化 18%,样本 30 天 × 3 时段,MTR 存证在档」——两句话的信息量差一个时代。测量方法论就是把后一种句子变成行业默认的标准:样本量、时段、百分位、可复现性四关,任何数字发布前逐关过。本文与本站测速工具的公开方法论同口径(那套口径已经受住日常使用检验),也是行情页全部指数的发布纪律。本文属于测速与诊断中心系列。

测量四关流程示意

第一关:样本量——多少数据才算数

  • 延迟:≥20 个包看分布(中位数与尾部都有意义的最小量);正式口径用 6 次 256B 不可缓存探针弃 1 取 5 的中位数(本站测速工具的探针设计:弃首包是因为它含 TCP/TLS 握手成本,会系统性偏高);
  • 丢包/失败率:≥100 个样本——10 个包的「0% 丢包」置信度约等于抛 10 次硬币没出反面;
  • 吞吐:≥30 秒窗口 + 丢弃慢启动段(本站口径:丢弃前 256KB 后,在最长 8 秒窗口按接收字节/时间计算);
  • 长期趋势:≥30 天 × 每日多时段——单周数据分不清「规律」与「那周恰好出事」。

第二关:时段——什么时候测才是真实体验

网络质量的时变性强于空间性:同一条线路,凌晨 4 点与晚上 9 点可以是两个产品。标准三窗口(目标用户当地时间):空闲 04:00–06:00(基线)/ 工作 10:00–12:00(日常)/ 晚高峰 20:00–23:00(真实体验)。发布纪律:只报空闲时段数据的对比是不完整对比——「晚高峰劣化幅度」(高峰 P50 ÷ 空闲 P50)是线路质量最有信息量的单一指标,任何选型对照都该带上它。

第三关:百分位——平均值的谎言与 P50/P95 的诚实

  • P50(中位数):一半样本比它好——典型体验;对极端值不敏感,比均值稳健;
  • P95:95% 的样本比它好——尾部体验;实时业务(语音/游戏/交易)的用户记住的是尾部不是典型;
  • 均值:分布对称时与 P50 接近,有长尾时被拖高——网络延迟几乎总有长尾(偶发拥塞/重传),所以均值是最常被误用的统计量;
  • 抖动:本站口径为「排序后相邻样本差值绝对值的均值」——衡量稳定性而非快慢;P95−P50 的差值是它的粗读版。
指标回答的问题适用业务
P50典型情况多快网页、API、批量任务
P95最差 5% 有多糟实时音视频、游戏、交易
失败率多少请求根本没完成全部(可用性底线)
抖动体验稳不稳语音、视频、交互类
晚高峰劣化幅度线路的真实成色选型对比的核心指标

第四关:可复现性——别人能重跑你的数字吗

  • 口径公开:探针参数(大小/次数/超时/弃样规则)、聚合方式(中位数/P95)、时段定义全部写进发布物——本站测速工具的方法论章节就是范本(页面公开全文);
  • 环境记录:测量点(谁的网、什么接入)、目标点(IP/节点)、时间戳三要素进文件名;
  • 工具边界声明:浏览器探针发不了 ICMP——「探针失败率」不是 ping 意义的丢包率(本站工具页原话);吞吐受本地带宽封顶——只做横向对比不做绝对结论。边界不声明,数字就会被过度解读;
  • 原始数据可查:MTR 文本、采样序列、脚本版本归档——「结论 + 原始档案」双件套才算完整发布(存证规范见MTR 与 Looking Glass)。

反模式清单:这些「数据」不要信

  • 单次截图:一张 speedtest 截图 = 一个样本点,什么都证明不了;
  • 无时段标注的对比:A 家凌晨数据 vs B 家晚高峰数据,赢了也是无效胜利;
  • 只有均值的报告:长尾被均值吃掉——问 P95 与失败率,答不上来的数据不采信;
  • 不可复现的「实测」:不给口径、不给环境、不给原始档案的「我们实测很快」,按营销话术处理;
  • 插值充数:样本缺口用估算填上还标「实测」——本站行情页的做法是缺口就置 null 标注待补(R6 纪律),宁缺毋假。

方法论的组织落地:一页纸口径卡

把四关浓缩成团队共用的一页纸:探针参数(包大小/次数/超时/弃样)、三时段定义、发布必带指标(P50/P95/失败率/劣化幅度)、存证四件套(MTR 双向/ping 分布/时间戳/影响描述)——新人照着卡片采的数据就能和老数据同表对比。口径卡的价值在跨时间可比:三个月后回看数据,口径没变,趋势才可信;口径变了必须显式声明并从新口径重新积累基线。

把方法论装进你的工具箱

# 最小可复现测量套件(配合 /tools/speedtest-node-list 的节点清单):
# ① 延迟分布(20 包)
ping -c 20 目标IP | tail -2
# ② 失败率与逐跳(100 包,双向)
mtr -rwzbc 100 目标IP > mtr-out-$(date +%F-%H%M).txt
# ③ HTTP 分阶段(10 次循环取分布)
for i in $(seq 10); do curl -o /dev/null -sw "%{time_namelookup} %{time_connect} %{time_starttransfer} %{time_total}\n" https://目标/; sleep 2; done > http-samples.txt
# ④ 汇总(P50/P95 用 sort+awk 手算)
sort -n http-samples.txt | awk '{a[NR]=$4} END{printf "total P50=%.3fs P95=%.3fs\n", a[int(NR*0.5)+1], a[int(NR*0.95)+1]}'

相关工具:在线测速工具(本方法论的工程实现,32 节点矩阵) · 测速节点清单 · MTR 与 Looking Glass。方法论的应用现场:地区延迟观察与月度线路摘要;诊断全景回测速与诊断中心。