在华为云上做架构规划时,同可用区(Availability Zone,AZ)内的ECS实例之间通常走内部低时延网络,但不同实例规格绑定内网带宽不同,实际能跑到的延迟和吞吐并不是固定值。本次测试在同一VPC、同一子网下创建两台同规格ECS,使用私有IP互访,围绕ICMP时延、TCP吞吐、UDP稳定性和长时间丢包表现展开评测。测试结果可用于判断微服务、数据库主从复制和缓存集群是否适合部署在同可用区。

一、测试环境与实例规格
测试选取两种常见实例规格进行对比,分别是通用型 c6.large.2(2vCPU、4GiB、内网基准带宽约1.5Gbps)和 c6.xlarge.2(4vCPU、8GiB、内网基准带宽约2.5Gbps)。两台ECS位于同一可用区,分配在同一VPC的/24子网中,私网地址分别为192.168.10.5和192.168.10.6。系统镜像统一使用 openEuler 22.03,内核版本为5.10,测试前关闭防火墙和SELinux,安全组放通同子网全部TCP/UDP端口。
为避免宿主机负载干扰,测试期间两台实例CPU空闲率均保持在95%以上。客户端和服务端SSH会话单独使用,避免测试数据经过公网。安装工具的命令如下:
yum install -y iperf3 qperf
iperf3用于吞吐和丢包测试,qperf用于TCP连接建立延迟和单流时延测试。ping命令本身不依赖额外安装,可以用来观察ICMP RTT和抖动。测试时注意所有目标IP都应使用私有IP,不能使用弹性公网IP,否则会绕行公网。
二、延迟与抖动测试
首先使用ping发送1000个ICMP包,发包间隔设置为200毫秒,避免瞬间拥塞影响结果。命令如下:
ping -c 1000 -i 0.2 192.168.10.6
在c6.large.2规格下,测试结果为RTT最小0.081毫秒、平均0.112毫秒、最大0.218毫秒,mdev约0.025毫秒。可以看到同可用区内网ICMP延迟非常稳定,平均值在0.1毫秒左右,最大延迟也仅略高于0.2毫秒,这意味着即使采用多次RPC调用,通信时间也不会被网络明显放大。
ping测试的是内核协议栈处理完整ICMP往返路径,包含了软件中断和调度开销。为了进一步拆解TCP层时延,使用qperf测试TCP连接建立和单次请求响应:
qperf 192.168.10.6 tcp_lat tcp_bw
测试结果显示TCP单次时延约102微秒,与ping结果量级一致但略低,说明相同子网内数据面路径很短。抖动方面,qperf连续采样中超过95%的延迟值落在90到115微秒区间,没有出现明显的延迟尖峰。这个特性对敏感型业务非常重要,例如Redis集群节点间的心跳和主从复制如果抖动过大,容易触发误判或主从切换。
同可用区延迟低的主要原因在于流量不会跨越可用区边界,也不会经过公网网关。大部分情况下,同一子网内的两台ECS数据包只经过虚拟交换机和宿主机网卡转发,路径较短,因此RTT远低于跨可用区常见的0.3到0.6毫秒。
三、TCP与UDP吞吐量测试
吞吐测试重点看单条TCP流能否打满实例规格的内网带宽。先在服务端启动iperf3监听:
iperf3 -s
客户端进行60秒单流测试:
iperf3 -c 192.168.10.6 -t 60
c6.large.2的单流TCP吞吐约1.31Gbps,接近1.5Gbps基准带宽的87%。换成4条并行流后,总吞吐提升到1.43Gbps左右,进一步接近标称上限。c6.xlarge.2单流达到2.08Gbps,4并行流提升到2.32Gbps,约达到2.5Gbps基准的93%。这说明单条TCP流受发送窗口、拥塞控制及单核处理能力限制,不容易完全占满带宽,多流并发是接近规格上限的有效方法。
UDP测试则更关注数据包在接近带宽上限时的行为。客户端发送低于基准带宽的固定码率,例如对c6.large.2发送1Gbps UDP数据:
iperf3 -c 192.168.10.6 -u -t 60 -b 1000M
在1Gbps码率下,UDP丢包率为0,接收端抖动约0.03毫秒。将码率提升到1.4Gbps后,开始出现少量丢包,但整体仍能维持在0.2%以内。当码率超过1.5Gbps时,丢包率明显上升,说明已经触碰到实例内网带宽上限。因此,UDP类业务要预留约10%到20%的带宽余量,否则容量规划容易过载。
四、丢包率与长稳表现
长时间运行测试可以暴露偶发丢包和性能波动。本次使用ping连续发送20000个包,间隔0.2秒,总时长约66分钟。结果丢包率为0%,RTT平均值与短时测试一致。并行运行iperf3 TCP压测30分钟,吞吐曲线在初期略有爬升后保持平坦,波动幅度小于3%,没有出现周期性下降。
丢包率对数据库主从复制和分布式中间件影响很大。以MySQL异步复制为例,主从节点位于同可用区时,RTT极低且0丢包,从库延迟多数情况下可以控制在毫秒级。相反,如果跨可用区或跨地域部署,不仅RTT增加,遇到网络抖动时主从线程也可能频繁重连。测试结果支持将需要强一致或低复制的节点放在同一可用区。
不过,同可用区部署并不意味着零风险。如果可用区发生电力或设备故障,两个节点可能同时不可用。因此对于业务连续性要求高的系统,建议在同可用区低延迟通信基础上,保留跨可用区异步副本或快照备份,作为可用性和性能之间的平衡。
五、测试结论与优化建议
从实测结果看,华为云ECS同可用区内网性能表现稳定:ICMP RTT平均约0.1毫秒,抖动低于0.05毫秒,TCP多流吞吐可以达到实例内网带宽的90%以上,长时间测试丢包率为0。这一性能足以支撑微服务RPC、数据库主从、缓存集群和消息队列等常见低延迟组件。
如果发现吞吐明显低于预期,可以从几个方面排查。首先确认实例规格是否匹配业务带宽需求,内网带宽上限通常随vCPU数提高。其次检查网卡队列数和RPS/RFS配置,多队列可以将网络软中断分散到多个vCPU,单流性能也会有所改善。使用ethtool -l eth0可以查看当前队列数。最后,避免在ECS内部同时产生大量公网流量,公网带宽和内网带宽可能共享部分底层能力,极端情况下会相互影响。
综合来看,同可用区部署是华为云上获得低时延、高稳定内网通信的最直接方式。对于关键业务,可以优先在同可用区构建核心集群,再通过跨可用区备份提升可用性。