ECS实例网络性能测试方法
概述
本文介绍了如何测试ECS实例的网络性能。
详细信息
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
关于如何进行网络性能测试的具体内容如下。
准备环境
需要准备如下设备。
说明:所有ECS实例必须在同一个安全组内。
-
1台测试机:被压力测试网络PPS的ECS实例,可作为Netperf或iperf3测试中的Client端或Server端,具体规格如下。
说明:假设测试机IP地址为:172.0.0.1。
- 镜像:centos_7_2_64_40G_base_20170222.vhd
- 规格:ecs.se1.14xlarge
- 数量:1
- 虚拟机名称:i-test-vm(以现场实际情况进行命名)
-
8台陪练机:主体为ECS实例,作为Netperf测试或iperf3测试中的Client端或Server端,与测试机之间建立控制连接,传递测试配置相关的信息,以及测试结果,具体规格如下。
说明:假设8台陪练机的IP地址为:172.0.0.2~172.0.0.9。
- 镜像:centos_7_2_64_40G_base_20170222.vhd
- 规格:ecs.se1.14xlarge
- 数量:8
- 虚拟机名称:i-partnerVm-{1-8}
安装Netperf
按以下步骤在测试机和陪练机上安装Netperf。
-
执行以下命令,下载Netperf。
wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
-
依次执行以下命令,安装Netperf。
tar -zxvf netperf-2.5.0.tar.gz cd netperf-netperf-2.5.0 ./configure && make && make install && cd ..
-
执行
netperf -h
和netserver -h
命令,确认安装成功。
安装iperf3
按以下步骤在测试机和陪练机上安装iperf3工具。
-
依次执行以下命令,下载iperf3。
yum install git -y git clone https://github.com/esnet/iperf
-
依次执行以下命令,安装iperf3。
cd iperf ./configure && make && make install && cd .. cd src ADD_PATH="$(pwd)" PATH="${APP_PATH}:${PATH}" export PATH
-
执行
iperf3 -h
命令,确认安装成功。
开启网卡多队列功能
网络多队列默认是开启的,不需要再开启。如需开启,请参见配置网卡多队列。
使用Netperf工具测试网络性能
Netperf工具的主要参数
Netperf安装完成后会生成2个工具:netserver和netperf。以下为2个工具的主要参数。
工具名称 | 工具说明 | 主要参数 | 参数说明 |
---|---|---|---|
netserver | 接收端工具(Server 端) | -p | 端口号。 |
-D | 不在后台运行。 | ||
-4 | IPv4地址。 | ||
netperf | 发送端工具(Client 端) | -H | 指定ECS实例的IP地址。 |
-p | 指定ECS实例的端口。 | ||
-l | 指定运行时间。 | ||
-t | 指定发包协议类型:TCP_STREAM或UDP_STREAM。建议使用UDP_STREAM。 | ||
-m |
指定数据包大小。
|
测试收方向的具体步骤
-
依次执行以下命令,在测试机内启动netserver进程。
netserver -p 11256 netserver -p 11257 netserver -p 11258 netserver -p 11259 netserver -p 11260 netserver -p 11261 netserver -p 11262 netserver -p 11263
说明:-p为指定不同端口。
-
执行以下命令,在陪练机内启动netperf进程,分别指定到测试机的不同netserver端口。
netperf -H 172.0.0.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台 netperf -H 172.0.0.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #第二台 netperf -H 172.0.0.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #第三台 netperf -H 172.0.0.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #第四台 netperf -H 172.0.0.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #第五台 netperf -H 172.0.0.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #第六台 netperf -H 172.0.0.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #第七台 netperf -H 172.0.0.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #第八台
-
如果需要测试BPS,则第二步命令应该改为如下。
netperf -H 172.0.0.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台 netperf -H 172.0.0.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二台 netperf -H 172.0.0.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三台 netperf -H 172.0.0.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四台 netperf -H 172.0.0.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五台 netperf -H 172.0.0.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六台 netperf -H 172.0.0.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七台 netperf -H 172.0.0.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八台
测试发方向的具体步骤
-
执行以下命令,在所有陪练机内启动1个netserver进程。
netserver -p 11256
-
执行以下命令,在测试机内启动8个netperf进程,
-H
指定为不同IP地址。netperf -H 172.0.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台 netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第二台 netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第三台 netperf -H 172.0.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第四台 netperf -H 172.0.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第五台 netperf -H 172.0.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第六台 netperf -H 172.0.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第七台 netperf -H 172.0.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第八台
-
如果需要测试BPS,则上一步命令应该改为如下。
netperf -H 172.0.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台 netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第二台 netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第三台 netperf -H 172.0.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第四台 netperf -H 172.0.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第五台 netperf -H 172.0.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第六台 netperf -H 172.0.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第七台 netperf -H 172.0.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第八台
输出结果
最终发送端每个netperf进程会输出测试结果,第一条数据行为发包信息概览如下。
Socket Message Elapsed Messages Size Size Time Okay Errors Throughput bytes bytes secs # # 10^6bits/sec 124928 1 10.00 4532554 0 3.63 212992 10.00 1099999 0.88
说明:通常我们建议在server端执行sar命令来统计实际收到的包并作为实际结果,具体命令为
sar -n DEV 1 320
。
输出结果中各字段含义解释如下表所示。
字段数据 | 含义 |
---|---|
124928 | 缓冲区大小 |
1 | 数据包大小(Byte) |
10.00 | 测试时间(s) |
4532554 | 数据包成功数 |
0 | 失败数 |
3.63 | 网络吞吐量(Mbit/s) |
使用iperf3工具测试网络性能
iperf3工具参数介绍和测试相关内容如下。
iperf3工具的主要参数
工具名称 | 工具说明 | 主要参数 | 参数说明 |
iperf3 | 收发一体 | -s | 表示作为server端接收包。 |
-i | 间隔多久输出信息流量信息,默认单位为秒。 | ||
-p | 指定服务的监听端口。 | ||
-u | 表示采用UDP协议发送报文,不带该参数表示采用TCP协议 | ||
-l | 表示包大小,默认单位为 Byte。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。 | ||
-b | 设定流量带宽,可选单位包括:k/m/g。 | ||
-t | 流量的持续时间,默认单位为秒。 | ||
-A | CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度。 |
测试收方向的具体步骤
-
在测试机中以server模式启动iperf3进程。
iperf3 -s -i 1 -p 16001 iperf3 -s -i 1 -p 16002 iperf3 -s -i 1 -p 16003 iperf3 -s -i 1 -p 16004 iperf3 -s -i 1 -p 16005 iperf3 -s -i 1 -p 16006 iperf3 -s -i 1 -p 16007 iperf3 -s -i 1 -p 16008
-
在陪练机中以client模式启动iperf3进程,分别指定到测试机的不同端口。
iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16001 -A 1 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16002 -A 2 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16003 -A 3 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16004 -A 4 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16005 -A 5 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16006 -A 6 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16007 -A 7 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16008 -A 8
测试发方向的具体步骤
-
执行以下命令,在每个陪练机中以server模式启动1个iperf3进程。
iperf3 -s -i 1 -p 16001
-
在测试机中以client模式启动8个iperf3进程。
iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.2 -i 1 -p 16001 -A 1 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.3 -i 1 -p 16001 -A 2 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.4 -i 1 -p 16001 -A 3 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.5 -i 1 -p 16001 -A 4 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.6 -i 1 -p 16001 -A 5 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.7 -i 1 -p 16001 -A 6 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.8 -i 1 -p 16001 -A 7 iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.9 -i 1 -p 16001 -A 8
说明:-c指定为各个陪练机的IP地址。
输出结果
最终发送端每个iperf3进程会输出测试结果,第一条数据行为发包信息概览如下。
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 237 MBytes 199 Mbits/sec 0.027 ms 500/30352 (1.6%) [ 4] Sent 30352 datagrams
说明:通常我们建议在server端执行sar命令来统计实际收到的包并作为实际结果,具体命令为
sar -n DEV 1 320
。
输出结果中各字段含义解释如下表所示。
字段数据 | 含义 |
---|---|
237 | 传送的总数据量 |
199 | 带宽大小 |
0.027 | 波动率 |
500/30352 | 丢包/总报文数 |
1.6% | 丢包率 |
如果您有其他问题,可以联系汉中创云互联阿里云代理商,为您提供一对一专业全面的技术服务,同时新老阿里云会员,均可享受我公司代理商价格,欢迎咨询!
我有话说: