1. 首先准备一台外部测试机(建议Linux),并确保可以SSH到香港服务器或能从香港服务器SSH回测试机;在双方都可安装工具并打开必要端口(iperf3默认5201)。确认防火墙/安全组允许ICMP和测试端口。
2. 在测试机与目标云主机上安装:ping(已自带)、mtr、iperf3、wrk/ab(HTTP压测)、tcpdump、fping。Debian/Ubuntu示例:sudo apt update && sudo apt install -y mtr iperf3 wrk tcpdump fping apache2-utils
3. 使用ping统计延迟样本:ping -c 1000 -i 0.2 your.hk.ip > ping.log。分析最小/平均/最大/抖动:cat ping.log | tail -1。并用fping并行从多个源测同一IP:fping -c 100 -q your.hk.ip 。丢包率=丢包次数/发送次数。
4. 用traceroute或mtr定位瓶颈跳点:mtr -r -c 200 your.hk.ip > mtr.txt。查看哪一跳开始出现高时延或丢包,注意大陆到香港路径的BGP/出口链路。
5. 在云主机执行:iperf3 -s。在测试机执行:iperf3 -c your.hk.ip -P 8 -t 60 -w 512K。参数说明:-P 并发流数,-t 测试秒数,-w TCP窗口。观察带宽稳定性、retransmits。
6. UDP测试:iperf3 -c your.hk.ip -u -b 200M -t 60 -P 4。先估算链路可达带宽,再增减-b。查看服务器端统计的丢包和抖动(jitter)。
7. 用wrk模拟真实并发:wrk -t12 -c400 -d30s http://your.hk.ip/。或用ab:ab -n 20000 -c 200 http://your.hk.ip/index.html。关注请求延迟分位数(50/95/99th)与失败率。
8. 在峰值/非峰值、不同工作日进行测试(建议早中晚各3次),并从多个地理节点(国内不同运营商、台湾、新加坡)采样,以判断稳定性与跨运营商表现差异。
9. 推荐脚本化:ping循环记录时间戳:while true; do date +%s,%N; ping -c 10 your.hk.ip | tail -1; sleep 60; done > ping_series.csv。iperf3保存JSON:iperf3 -c your.hk.ip -J > iperf3.json,便于后续分析和绘图。
10. 判定参考:对亚洲用户,延迟<30-50ms优良;丢包<0.1%理想、<1%可接受;TCP吞吐应接近带宽套餐的80%以上;抖动<20ms对实时业务要求高。如发现高丢包或路径抖动,重点分析中间跳点。
11. 用tcpdump抓包:tcpdump -i eth0 host TEST_IP and port 5201 -w trace.pcap,导入Wireshark查看TCP重传、窗口缩小、SACK等信息,可定位是链路还是主机端拥塞。
12. 问:如果iperf3测不到套餐带宽怎么办? 答:先排查双方窗口和并发流数(增加-P与-w),确认没有本地网络或防火墙限速;再从不同源测试判断是链路还是ISP限速;必要时要求厂商提供路测或更换线路。
13. 问:如何区分丢包来源? 答:用mtr从多地(至少两条不同出口)到目标做对比;若多个源在相同跳点出现丢包,问题在中间链路;若只有某运营商出现,则可能是该运营商到香港的出口问题。
14. 问:想长期监控并输出报告,有何建议? 答:部署Prometheus + node_exporter与黑箱监控(blackbox_exporter)定时ping、http、tcp探测并把iperf3结果通过脚本写入时序库;用Grafana做面板并导出周/月报作为SLA依据。