Linux云服务器网络性能测试方法
手把手教您用netperf工具、iperf3工具,测试弹性云服务器间网络性能。主要包括“测试准备”、“TCP带宽测试”、“UDP PPS测试”和“时延测试”。
背景知识
测试准备
- 准备弹性云服务器。 要求:被测机与辅助弹性云服务器的类型、规格需保持一致,并在同一云服务器组,遵循反亲和部署。
表3 环境准备 类型
数量
镜像
规格
IP地址
被测机
1台
CentOS 7.4 64bit(推荐)
-
192.168.2.10
辅助云服务器
2台
CentOS 7.4 64bit(推荐)
vCPU:8核及以上
192.168.2.11、192.168.2.12
- 准备测试工具。
要求:需分别在被测机和辅助云服务器上安装测试工具netperf、iperf3、sar。安装方法如表4所示。
表4 安装测试工具 测试工具
安装方法
netperf
- 执行以下命名,安装gcc。
yum -y install unzip gcc gcc-c++
- 执行以下命令,下载netperf。
wget https://github.com/HewlettPackard/netperf/archive/refs/tags/netperf-2.7.0.zip
- 执行以下命令,解压并安装netperf。
unzip netperf-2.7.0.zip cd netperf-netperf-2.7.0/ ./configure && make && make install
iperf3
- 执行以下命令,下载iperf3。
wget --no-check-certificate https://codeload.github.com/esnet/iperf/zip/master -O iperf3.zip
- 执行以下命令,解压并安装iperf3。
unzip iperf3.zip cd iperf-master/ ./configure && make && make install
sar
执行以下命令,安装sar。
yum -y install sysstat
- 执行以下命名,安装gcc。
TCP带宽测试(使用netperf工具)
采用多流进行测试,本文以64条流为例,均分到2个辅助云服务器上,其他流数以此类推。
TCP带宽测试采用多流模型:
- 当测试TCP发送带宽时,采用一对多模型,即保证接收端能力足够。
- 当测试TCP接收带宽时,采用多对一模型,即保证发送端能力足够。
- 测试TCP发送带宽。
- 分别在“所有辅助云服务器”中执行以下命令,启动netserver进程。
#!/bin/bash for port in {1..32}; do netserver -p $((12000 + port)) > /dev/null 2>&1 & done - 在“被测机”中执行以下命令,启动netperf进程,分别指定到辅助云服务器的不同netserver端口。其中,netperf工具的常用参数说明请参见表1。
##IP地址对应第一台辅助云服务器: #!/bin/bash server_ip=192.168.2.11 #测试机私网IP地址 for port in {1..32}; do netperf -H ${server_ip} -p $((12000 + port)) -t TCP_STREAM -l 300 -- -m 1440 > netperf_${server_ip}_$((12000 + port)).log 2>&1 & done ##IP地址对应第二台辅助云服务器: #!/bin/bash server_ip2=192.168.2.12 #测试机私网IP地址 for port in {1..32}; do netperf -H ${server_ip2} -p $((12000 + port)) -t TCP_STREAM -l 300 -- -m 1440 > netperf_${server_ip2}_$((12000 + port)).log 2>&1 & done
- 分别在“所有辅助云服务器”中执行以下命令,启动netserver进程。
- 测试TCP接收带宽。
- 在“被测机”中执行以下命令,启动netserver进程。
#!/bin/bash for port in {1..64}; do netserver -p $((12000 + port)) > /dev/null 2>&1 & done - 执行以下命令,分别在“辅助云服务器”中启动netperf进程。
##登录辅助云服务器1: #!/bin/bash server_ip=192.168.2.10 #测试机私网IP地址 for port in {1..32}; do netperf -H ${server_ip} -p $((12000 + port)) -t TCP_STREAM -l 300 -- -m 1440 > netperf_${server_ip}_$((12000 + port)).log 2>&1 & done ##登录辅助云服务器2: #!/bin/bash server_ip=192.168.2.10 #测试机私网IP地址 for port in {33..64}; do netperf -H ${server_ip} -p $((12000 + port)) -t TCP_STREAM -l 300 -- -m 1440 > netperf_${server_ip}_$((12000 + port)).log 2>&1 & done
- 在“被测机”中执行以下命令,启动netserver进程。
- 解析TCP测试结果。
测试结束后,发送端netperf进程输出结果如图1所示,最终结果为所有netperf进程测试结果之和。
由于netperf进程众多,为方便统计,强烈建议测试指令输入完毕后,直接在被测弹性云服务器上用sar查看测试数据,命令为:
sar -n DEV 1 60
UDP PPS测试(使用iperf3工具)
- 测试UDP发送PPS。
- 登录辅助云服务器。
- 分别在所有“辅助云服务器”中执行以下命令,启动server进程。
#!/bin/bash for port in {1..32}; do iperf3 -s -p $((12000 + port)) > /dev/null 2>&1 & done - 在“被测机”中执行如下命令,启动client进程。其中,iperf3工具的常用参数说明请参见表2。
##辅助云服务器1: #!/bin/bash for port in {1..32}; do server_ip=192.168.2.11 #测试机私网IP地址 iperf3 -c ${server_ip} -p $((12000 + port)) -u -b 0M -t 300 -l 64 -i 30 --logfile iperf_${server_ip}_$((12000 + port)).log > /dev/null 2>&1 & done ##辅助云服务器2: #!/bin/bash for port in {1..32}; do server_ip2=192.168.2.12 #测试机私网IP地址 iperf3 -c ${server_ip2} -p $((12000 + port)) -u -b 0M -t 300 -l 64 -i 30 --logfile iperf_${server_ip2}_$((12000 + port)).log > /dev/null 2>&1 & done
- 测试UDP接收PPS。
- 执行以下命令,在“被测机”中启动server进程。其中,iperf3工具的常用参数说明请参见表2。
#!/bin/bash for port in {1..64}; do iperf3 -s -p $((12000 + port)) > /dev/null 2>&1 & done - 分别在“辅助云服务器”中,执行以下命令,启动client进程。其中,iperf3工具的常用参数说明请参见表2。
##登录辅助云服务器1: #!/bin/bash for port in {1..32}; do server_ip=192.168.2.10 #测试机私网IP地址 iperf3 -c ${server_ip} -p $((12000 + port)) -u -b 0M -t 300 -l 64 -i 30 --logfile iperf_${server_ip}_$((12000 + port)).log > /dev/null 2>&1 & done ##登录辅助云服务器2: #!/bin/bash for port in {33..64}; do server_ip=192.168.2.10 #测试机私网IP地址 iperf3 -c ${server_ip} -p $((12000 + port)) -u -b 0M -t 300 -l 64 -i 30 --logfile iperf_${server_ip}_$((12000 + port)).log > /dev/null 2>&1 & done
- 执行以下命令,在“被测机”中启动server进程。其中,iperf3工具的常用参数说明请参见表2。
- 解析UDP PPS测试结果。
UDP PPS测试结果示例如图2所示。
由于iperf3进程众多,为方便统计,强烈建议测试指令输入完毕后,直接在被测弹性云服务器上用sar查看测试数据,命令为:
sar -n DEV 1 60
时延测试
- 执行以下命令,在“被测机”中启动qperf进程。
qperf &
- 登录辅助云服务器1,并执行以下命令,进行时延测试。
qperf 192.168.2.10 -m 64 -t 60 -vu udp_lat
测试完后屏幕显示结果的latency字段就是ECS间时延。

