本文介绍如何使用iPerf3测试云服务器的网络性能。
iPerf3是用于测试IP网络上最大可用带宽的工具,支持调节时序、缓冲区、协议(TCP,UDP,SCTP与IPv4和IPv6)有关的各种参数。对于每次测试,它都会详细的报告网络带宽,延迟抖动和数据包丢失率。
说明
本文的测试结果仅作为参考,不代表云服务器的真实最优性能。
参考 购买云服务器,准备被测试机器和辅助测试机器。本文测试环境如下表所示:
ECS云服务器 | 云服务器信息 | 数量 | IP地址 | 说明 |
---|---|---|---|---|
被测试机器 |
| 1 | 172.0.0.1 | 被压力测试网络PPS的ECS实例,在iperf3测试中可作为Client端或Server端。 |
辅助测试机器 |
| 4 | 172.0.0.2 ~ 172.0.0.5 | 在iperf3测试中作为Client端或Server端,与测试机间建立控制连接,传递测试信息及结果。 |
说明
所有ECS云服务器必须在同一个安全组。
apt update apt install -y iperf3
在被测试机器(172.0.0.1)上创建脚本server.sh,并添加可执行权限。
vim server.sh
命令,创建server.sh文件。i
,进入编辑模式。#! /bin/bash proc_num=$1 port_begin=12000 ls for ((i=0; i<proc_num; i++)) do port=$((port_begin + i)) cpu=$((i%$1 + 1)) iperf3 -s -i 1 -p $port -A $(( $cpu % $1 )) -D > /dev/null & done
Esc
退出编辑模式,然后输入:wq
并回车。chmod +x server.sh
指令,赋予server.sh文件执行权限。在被测试机器(172.0.0.1)上运行./server.sh 128
,启动128个iperf3 server进程。
在四台辅助测试机器上创建脚本client.sh,并添加可执行权限。
vim client.sh
命令,创建client.sh文件。i
,进入编辑模式。#! /bin/bash dst_ip=$1 proc_num=$2 port_begin=12000 for ((i=0; i<proc_num; i++)) do port=$((port_begin + i)) iperf3 -c $dst_ip -u -l 16 -b 10000M -i 1 -t 3600 -p $port -A $(( $i % $2)) -P 1 > /dev/null 2>&1 & done
说明
4台辅助测试机器的port_begin
需要递增,如:
172.0.0.2使用12000
172.0.0.3使用12032
172.0.0.4使用12064
172.0.0.5使用12096
Esc
退出编辑模式,然后输入:wq
并回车。chmod +x client.sh
指令,赋予client.sh文件执行权限。在四台辅助测试机器分别执行./client.sh 172.0.0.1 32
,为每台辅助测试机器启动32个iperf3 client进程。
在被测试机器端执行sar -n DEV 1
,查看测试结果。
128个iperf server均分给4台辅助测试机器,每个辅助机器启动32个iperf server进程。
被测试机器(172.0.0.1)分别向每一台辅助测试机器(172.0.0.2~172.0.0.5)启动32个iperf client进程打流,总共128个iperf client进程。
在四台辅助测试机器上创建脚本server.sh,并添加可执行权限。
vim server.sh
命令,创建server.sh文件。i
,进入编辑模式。#! /bin/bash proc_num=$1 port_begin=12000 for ((i=0; i<proc_num; i++)) do port=$((port_begin + i)) cpu=$((i%$1 + 1)) iperf3 -s -i 1 -p $port -A $(( $cpu % $1 )) -D > /dev/null & done
说明
4台辅助测试机器的port_begin
需要递增,如:
172.0.0.2使用12000
172.0.0.3使用12032
172.0.0.4使用12064
172.0.0.5使用12096
Esc
退出编辑模式,然后输入:wq
并回车。chmod +x server.sh
指令,赋予server.sh文件执行权限。在辅助测试机器上运行./server.sh 32
,启动32个iperf3 server进程。
在被测试机器上(172.0.0.1)创建脚本client.sh,并添加可执行权限。
执行vim client.sh
命令,创建client.sh文件。
按i
,进入编辑模式。
在client.sh文件中,输入如下内容。
#! /bin/bash dst_ip=$1 port_begin=$2 cpu_start=$3 proc_num=$4 for ((i=0; i<proc_num; i++)) do port=$((port_begin + i)) cpu=$((cpu_start + i)) iperf3 -c $dst_ip -u -l 16 -b 10000M -i 1 -t 180 -p $port -A $(( $cpu % $4)) -P 1 > /dev/null 2>&1 & done
按Esc
退出编辑模式,然后输入:wq
并回车。
执行chmod +x client.sh
指令,赋予client.sh文件执行权限。
在被测试机器(172.0.0.1)执行以下命令,运行client.sh脚本文件。
./client.sh 172.0.0.2 12000 0 128 ./client.sh 172.0.0.3 12032 32 128 ./client.sh 172.0.0.4 12064 64 128 ./client.sh 172.0.0.5 12096 96 128
在四台辅助测试机器分别执行sar -n DEV 1
,查看测试结果。
四台辅助测试机器测试结果的总和即为被测试机器的测试结果: 3790019 + 3183582 + 3500913 + 3564047 约为14Mpps。