在云上部署分布式应用时,节点之间的内网吞吐量往往比CPU和内存更先成为瓶颈。华为云ECS官方规格表里给出了内网基准带宽和最大带宽,但实际能跑多少,和测试方法、实例规格、网络队列数量都有关系。iPerf3是验证内网带宽最常用的工具之一,但同一个实例用不同参数测出的结果可能相差很大。

本次测试选取同一VPC、同一可用区内的两台通用计算型ECS,操作系统为Huawei Cloud EulerOS 2.0,实例规格为4vCPU 8GB内存。两台机器均使用私有IP,客户端为192.168.10.20,服务端为192.168.10.21。由于内网流量不走公网,测试结果不受公网带宽限制,只与实例的内网规格和虚拟网络队列有关。
一、测试环境与前置条件
在选择测试规格时,尽量让两端的硬件配置一致,尤其要关注实例的内网带宽标称值。华为云不同实例规格的内网最大带宽有明显差异,例如同为4vCPU的不同代系实例,内网基准带宽和突发带宽可能不同。测试前先在控制台确认两台ECS处于相同VPC和子网,因为跨子网虽然可通,但会经过额外路由,可能引入不应有的损耗。
安全组是容易忽略的一环。iPerf3默认监听5201端口,如果服务端安全组没有放行TCP 5201和UDP 5201,测试会直接失败。建议先在同子网内用ping确认连通性,再用nc或telnet验证5201端口。华为云默认安全组通常不限制同VPC内互访,但自定义安全组可能只放行了22端口。
安装iPerf3非常简单,不同发行版使用不同包管理器。下面给出常见命令:
# Ubuntu / Debian apt update apt install -y iperf3 # Huawei Cloud EulerOS / CentOS yum install -y iperf3 # 查看版本 iperf3 -v
二、iPerf3命令与参数设计
iPerf3默认工作在TCP模式,常用参数包括-c指定服务端地址、-p指定端口、-P指定并行流数量、-t指定测试时长、-i指定输出间隔。很多人第一次测试只跑一个流,结果往往偏低,因为单个TCP连接在较高带宽下需要更大的内核缓冲区和足够的CPU处理能力。对于4vCPU以上的实例,至少使用4个并行流才可能接近规格上限。
TCP测试时,先在一台ECS上启动服务端:
iperf3 -s -p 5201
然后在另一台ECS上执行客户端命令。以下命令表示发起4条并行TCP流,持续30秒,每5秒打印一次结果:
iperf3 -c 192.168.10.21 -p 5201 -P 4 -t 30 -i 5
如果关注丢包率,可以使用UDP模式。UDP测试不会因为拥塞而主动降低发送速率,需要显式指定带宽目标-b。例如目标带宽设为4Gbit/s,如果实际内网能力不足,就会出现丢包。下面这条命令会以4Gbit/s速率持续发送20秒,并输出抖动和丢包统计:
iperf3 -c 192.168.10.21 -u -b 4G -t 20 -i 5
三、测试结果与典型问题
在本次4vCPU实例上,单流TCP测试平均带宽为2.86Gbit/s,远远低于多流测试结果。原因在于单个TCP连接受限于内核网络栈处理路径,且虚拟网卡的队列数量与vCPU绑定,单个流无法充分利用多核。通过top可以看到,测试期间一个vCPU核心的软中断占用较高,而其他核心相对空闲。
当把-P参数调整为4后,平均带宽提升到4.72Gbit/s,接近该实例标称的内网最大带宽。继续提升到8个并行流,带宽没有明显增加,说明此时已经到达规格限制。UDP测试中,以4.5Gbit/s发送时丢包率约0.3%,以4.8Gbit/s发送时丢包率上升到2.1%,说明稳定可用带宽建议控制在标称值的90%左右。
下表汇总了本次测试的主要数据:
| 测试模式 | 并行流 | 平均带宽 | 丢包率 |
|---|---|---|---|
| TCP | 1 | 2.86Gbit/s | 0 |
| TCP | 4 | 4.72Gbit/s | 0 |
| UDP | 1 | 4.5Gbit/s | 0.3% |
| UDP | 1 | 4.8Gbit/s | 2.1% |
四、带宽优化与后续建议
如果测试结果与标称值差距较大,可以先检查网卡队列。华为云ECS的高性能实例通常支持多队列,但低规格实例可能只有单队列。通过cat /proc/interrupts可以观察网卡中断是否集中在单一CPU核上。若集中在单核,可以尝试在系统层面调整中断亲和性,或者升级到更高规格实例以获得更多vCPU和队列。
MTU也是内网带宽评测中容易被忽略的变量。华为云VPC默认MTU通常为1500字节,开启巨帧后可以达到8500字节以上。巨帧能减少封包数量,在高带宽场景下降低CPU开销,但要求两端操作系统和交换机都支持。修改MTU后需要重启网络服务,并重新测试确认没有引入分片或丢包。建议先在测试环境验证,不要直接在生产实例上操作。
总体来看,iPerf3测出的带宽只能代表特定参数下的网络能力,业务实际能利用的带宽还与应用协议、消息大小、磁盘I/O有关。建议在正式上线前,用接近业务负载的并行流数量和传输块大小反复测试。若内网带宽确实成为瓶颈,可以优先考虑升级实例规格、启用网卡多队列,或者将大流量任务拆分成多个连接并行传输。