1.
测试目标与环境准备
目标:比较 AWS 香港(ap-east-1)实例与本地机房在网络延迟、带宽、HTTP性能、磁盘与数据库IO上的差异。
准备:1) 在AWS香港创建一台Linux实例(建议 t3.medium 或 m5.large),开放ICMP、iperf端口(5201)、HTTP端口(80/443)和你需要的DB端口。2) 本地机房准备同规格或已知规格的Linux服务器。3) 确保两端系统时钟同步(ntp/chrony)。
2.
基础网络连通性检查(Ping / Traceroute / MTR)
步骤:1) 从本地到AWS:ping -c 20
,记录平均/最大/最小延迟。2) traceroute -n 或 mtr -rw 查看路由跳数与中间丢包。3) 反向在AWS执行相同命令到本地公网IP。
注意:进行三次以上不同时间段的测试,分别记录并保存原始输出用于后续分析。
3.
带宽与吞吐能力测试(iperf3)
步骤:1) 在一端作为server:iperf3 -s -p 5201 --logfile iperf_server.log。2) 在另一端作为client:iperf3 -c -p 5201 -P 8 -t 60 --logfile iperf_client.log(-P 并发流数,-t 测试秒数)。3) 交叉测试:本地->AWS 和 AWS->本地 各做3轮并取平均。
参数建议:TCP和UDP都测试(UDP 使用 -u),记录丢包率、抖动(jitter)与吞吐峰值。
4.
HTTP/应用层性能(wrk & curl)
步骤:1) 在被测端部署简单静态网页或你要测试的服务。2) 使用wrk:wrk -t4 -c200 -d60s http:///path,记录请求/秒与延时分布(latency)。3) 使用curl进行单连接时间分解:curl -o /dev/null -s -w '%{time_starttransfer} %{time_total}\n' http:///path,循环 50 次记录平均。
建议:同时测试带/不带 CDN、开启/关闭 Keep-Alive 的差异;若是HTTPS,测握手时间和TLS建立成本。
5.
磁盘与数据库IO(fio / sysbench)
步骤:1) 磁盘IO:安装 fio,示例命令:fio --name=randread --ioengine=libaio --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting,分别在AWS实例与本地机房跑并保存结果。2) 数据库:用 sysbench 测试 MySQL OLTP:sysbench oltp_read_write --tables=10 --table-size=100000 prepare;随后 run 测试并记录 TPS 与延迟。
注意:在云上注意是否为本地盘(instance store)或网络盘(EBS),性能差别大,测试前记录盘类型与IO配置。
6.
监控与抓包(dstat / iostat / tcpdump)
步骤:1) 运行 dstat/dstat -cdnmgy 1 > dstat.log 监控CPU、网络、磁盘和内存。2) iostat -x 1 60 保存磁盘延迟与利用率。3) 在出现丢包或异常时使用 tcpdump -i eth0 -w capture.pcap host 进行抓包以供 Wireshark 分析。
记录:测试期间的系统负载和网卡队列情况可以帮助判断瓶颈(CPU、网卡中断或链路饱和)。
7.
结果处理与统计方法
步骤:1) 将多次测试结果导出为CSV(脚本可用 awk/sed 处理 iperf/wrk 输出)。2) 计算平均值、中位数、标准差以衡量稳定性。3) 绘图(使用 Excel、Python matplotlib 或 Grafana)展示延迟时间序列、带宽分布与丢包率变化。
判断准则:延迟上本地机房通常低于跨境(香港→本地)延迟;带宽受上行链路限制,应以吞吐平均与95百分位延迟作为参考。
8.
常见误区与优化建议
误区:1) 单次测试结果不可代表长期表现。2) 云实例规格不同或网络类型(EBS/本地盘)直接影响IO性能。
优化:禁用网卡offload(ethtool -K eth0 tso off gso off gro off)以获得真实延迟;使用多个并发流测试带宽;如果需要低延迟,选择更接近用户的区域或直连专线。
9.
问:做这种对比测试最核心的注意点是什么?
答:确保可比性——相同的测试工具、相同的操作系统调优、相近的硬件规格和多次分时段测试;记录网络类型(公网/专线)、磁盘类型(本地/EBS)与实例带宽上限。
10.
问:如何判断延迟差异是否影响业务?
答:将业务关键路径的响应时间(例如API第一字节时间)与SLA阈值对比;若跨境增加的RTT导致总体响应超阈或TPS下降,则需考虑架构调整(缓存、CDN或本地化部署)。
11.
问:如果想长期监控并自动化对比,推荐怎么做?
答:部署周期性脚本(cron)跑 iperf/wrk/ping,上传结果到时序数据库(Prometheus/InfluxDB),并在 Grafana 做看板与告警;同时保存原始抓包和dstat日志以便回溯分析。
来源:亚马逊服务器香港与本地机房性能对比测评报告