
- 准备说明:在同一台本地测试机(Linux/macOS)和目标美国节点各部署一台实例;统一操作系统(如 Ubuntu 22.04)。
- 网络与权限:确保实例有公网IP并允许 ICMP、TCP 5201(iperf3)和 HTTP/HTTPS 出入;关闭或设置相同防火墙规则以保证可比性。
- 规格统一:为可比性,选相近的实例规格(例如 2 vCPU / 4 GB 内存),并在相同美国区域(us-east-1 / us-west-1)各供应商同一可用区尽量一致。
- 本地与实例均安装:iperf3、mtr、traceroute、curl、ping、speedtest-cli(或 speedtest 官方 CLI)。安装命令示例:
sudo apt update && sudo apt install -y iperf3 mtr-traceroute traceroute curl iputils-ping
pip3 install speedtest-cli 或 sudo snap install speedtest-cli --classic
- 验证:iperf3 --version;speedtest-cli --version;确保能访问 5201 端口。
- 基本 ICMP 测试:从本地执行 ping -c 50 <目标公网IP>,记录平均(avg)、最小(min)、最大(max)和抖动(mdev)。示例:ping -c 50 34.XXX.XXX.XXX
- 路径分析:使用 traceroute -n -w 1
- 多时段采样:在不同时间段(高峰、离峰)各执行 3 次,每次 50 包,取中位数以减少偶发波动影响。
- iperf3 测试(TCP/多流):在目标实例上启动 iperf3 -s;在本地执行 iperf3 -c <目标IP> -t 30 -P 4,记录带宽(Mbps)。增减 -P 流数量观察并发影响。
- HTTP 下载测试:使用公共大文件或自己放置的测试文件,curl -o /dev/null -s -w "%{speed_download}\n" http://目标IP/10MB.bin 获取下载速率(B/s 转 Mbps)。示例文件来源:http://speedtest.tele2.net/10MB.zip。
- speedtest:在实例上执行 speedtest-cli --server
- 数据表格化:为每次测试记录:时间、服务商、区域、实例规格、ping avg/ms、iperf3 Mbps(平均、峰值)、HTTP Mbps、丢包率、traceroute异常跃点。
- 统计处理:每个测试点取三次中位数作为代表值,计算各供应商延迟差异与吞吐比率(例如 A 的吞吐 / B 的吞吐)。绘制折线图与箱线图可视化抖动与分布。
- 判定建议:若延迟差异 < 10ms 且吞吐差异 < 10% 可视为“相近”;对实时应用(VoIP/游戏)优先选延迟低的节点;对大流量上传下载优先吞吐高的节点。
问:如何保证不同提供商测试的公平性?
答:统一实例规格、相同区域、相同操作系统与防火墙规则,使用相同工具与采样策略(如每次 30s iperf3、50 次 ping),并在多时段重复测试取中位数,能最大程度保证公平性。
问:iperf3 测试时为什么会低于 HTTP 下载速度?
答:可能原因包括 TCP 并发流设置、单线程限制、实例网络队列或中间 CDN/缓存影响。使用多流(-P 参数)可逼近链路极限;HTTP 下载可能受服务器端和缓存优化影响,需用相同条件对比。
问:测试结果波动大,如何得出可靠结论?
答:采取分时段、多次采样并记录环境(时间、网络负载),去除明显异常点后计算中位数与置信区间。必要时在多个可用区重复测试并结合路由(traceroute/mtr)诊断波动来源。