同可用区内的云服务器通信,理论上走的是机房内部网络,延迟极低、带宽上限高,是搭建集群、数据库主从、负载均衡后端池的首选部署方式。但华为云ECS在同一可用区内的实际网络表现究竟如何?不同实例规格之间差异有多大?测试时又有哪些容易被忽略的坑?本文通过一组实测数据来回答这些问题。

测试环境与方法说明
本次测试选择华东-上海一区域,两台ECS实例部署在同一个可用区内。实例规格分别选取了c7.xlarge.2(4vCPU、8GB内存)和c7.2xlarge.2(8vCPU、16GB内存),镜像统一使用CentOS 8.2,安全组放行iperf3默认端口5201以及ICMP。两台实例均未绑定EIP,测试流量完全走内网,避免公网带宽限制干扰结果。
测试工具方面,吞吐测试使用iperf3,分别进行单线程和多线程测试;延迟测试使用ping命令采集1000个包的RTT数据,同时用sockperf做了TCP往返延迟补充测试。每轮测试重复三次取平均值,测试前通过ethtool确认网卡协商速率为25Gbps级别,并检查了CPU负载确保没有资源瓶颈。
实测结果:吞吐与延迟表现
首先是TCP吞吐数据。c7.xlarge.2在单线程模式下实测约3.1Gbps,多线程8并发时稳定在12.5Gbps左右;c7.2xlarge.2单线程约4.6Gbps,8线程可达21.3Gbps,已经接近该规格内网带宽上限。可以看到单线程和多线程差距非常大,这是因为Linux内核单个TCP连接的吞吐受限于CPU单核处理能力和拥塞窗口增长速度,并非链路带宽不够。
延迟方面,ping平均RTT在0.18ms左右,最小0.09ms,最大0.42ms,抖动很小。sockperf的TCP ping-pong模式测得往返延迟约0.11ms,这个水平对于同可用区部署是符合预期的。如果实测延迟超过1ms,通常要怀疑是否跨了可用区,或者实例所在宿主机负载过高。
影响测试结果的关键因素
第一个常见问题是测试结果远低于规格标称值。排查思路是:先用iperf3 -R做反向测试确认是否为发送端瓶颈;再检查实例规格文档中标注的基础带宽和小发包率指标,华为云不同规格的PPS限制差异很大,小包场景下PPS往往比带宽更容易成为瓶颈;最后确认安全组是否开启了流量监控或使用了网络ACL,这些都会带来额外开销。
第二个因素是内核参数调优。默认的TCP缓冲区在高带宽场景下可能不够用,建议调整以下参数:
# 优化TCP缓冲区,提升单连接吞吐 sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216 sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216" sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216" # 关闭Nagle算法对应的延迟确认干扰 sysctl -w net.ipv4.tcp_low_latency=1
第三个因素是多路径流量。如果实例配置了多个网卡或者使用了增强型网络,要注意路由表配置,测试流量可能没有走预期的路径。可以用tcpdump抓包确认实际的收发网卡,避免测了半天测的是错误路径。
测试建议与总结
做内网性能测试时,建议遵循几点:一是永远做双向测试,收发方向的能力可能不对称;二是多线程测试用-P 8参数并行压满链路,单线程数据只作为单连接能力参考;三是测试时长设置30秒以上,排除慢启动阶段的干扰;四是记录测试时间点,避免和其他业务高峰重叠。
总体来看,华为云ECS同可用区内网表现稳定,c7系列实例多线程吞吐可以接近规格标称带宽,延迟稳定在0.2ms以内,非常适合对网络敏感的分布式应用。选型时建议根据业务是带宽敏感还是PPS敏感来挑选规格,数据库类业务重点关注延迟指标,日志采集和缓存同步类业务则优先看PPS和吞吐上限。