云服务器网络性能测试指导
操作场景
本文介绍如何测试云服务器网络数据面性能,包含如下内容:
前提条件
- 准备2台规格一致的云服务器。
- 云服务器运行状态正常。
- 云服务器已绑定弹性公网IP。
- 云服务器内部已安装wget、tar工具,如果没有安装请执行以下命令进行安装:
yum install -y wget tar
测试网络时延(ping、udp、tcp时延)
- 安装和编译测试工具qperf。
测试网络时延,需要分别在2台云服务器上安装工具。
- 远程登录云服务器实例。
详细操作,请参见Linux BMS登录方式概述。
- 执行以下命令,下载工具安装包。
sudo yum install qperf
Ubuntu操作系统:
sudo apt install qperf
- 测试工具。
安装完成后,在一台云服务器上执行以下命令,使其作为服务器(server)端。
sudo qperf
然后在另一台作为客户(client)端的云服务器上通过以下命令进行连接并运行测试。
qperf [服务器地址] tcp_lat udp_lat -t 20 -m 64 -vvu
- 远程登录云服务器实例。
- 测试网络时延。
- 在server端,执行以下命令,运行测试工具。
qperf &
- 在client端,执行以下命令。
qperf [server端服务器ip地址] -t 60 tcp_lat udp_lat -m 64 -vvu
其中,-t为测试时长,单位为s。
- 在client端,执行以下命令。
ping [server端服务器ip地址] -c 120
其中,-c 为测试时长,单位为s。
测试结束后qperf执行语句以返回的latency为测试结果,ping执行语句以rtt中的avg时延为测试结果,并分别测试三次取平均值。
如果测试正常完成,过程中未报错且软件不退出,表示测试结果符合预期。
- 在server端,执行以下命令,运行测试工具。
- 查看网络时延测试结果。
在输出结果中,如下指标用于评估云服务器的网络时延:
- tcp时延:qperf执行语句tcp_lat中的latency
- udp时延:udp_lat中的latency
- ping时延:ping执行语句中rtt中的avg时延
示例以HCE OS 2.0操作系统为例介绍网络时延测试的结果:
表1 网络时延测试的结果记录 云服务器操作系统
HCE OS 2.0
Flavor
xlarge
规格
4U8G
tcp时延
23 us
udp时延
24 us
ping时延
0.08 ms
测试接收带宽
- 安装和编译测试工具netperf。
测试接收带宽,需要分别在2台云服务器上安装工具。
- 远程登录云服务器实例。
详细操作,请参见Linux BMS登录方式概述。
- 执行以下命令,下载工具安装包。
- 测试工具。
安装完成后,在一台云服务器上执行以下命令,使其作为服务器(server)端。
netperf -p 5001
然后在另一台作为客户(client)端的云服务器上通过以下命令进行连接并运行测试。
netperf -H [服务器ip地址] -t TCP_STREAM -l 15 -p 5001 -- -m 1440
其中,-l为测试时长,单位为s。
图1 工具测试结果
- 远程登录云服务器实例。
- 测试接收带宽。
- 在server端,执行以下命令。
for i in `seq 5001 5128`; do netserver -p $i & done
其中,-p为测试端口,打流的条数通常为云服务器队列数的2~3倍。
- 在client端,执行以下命令。
for i in `seq 5001 5128`; do netperf -H [server端服务器ip地址] -t TCP_STREAM -l 300 -p $i -- -m 1440 & done
- 在server端,执行以下命令。
sar -n DEV 1 180
表示每1秒采集一次,共采集180s。
测试结束后,观测云服务器接收带宽指标,共测试三次取平均值。
如果测试正常完成,过程中未报错且软件不退出,表示测试结果符合预期。
- 在server端,执行以下命令。
- 查看接收带宽测试结果。
在输出结果中,关注server端服务器的接收带宽结果。
Average中的rxkB/s值为接收带宽temp,将结果换算成Gbps,换算公式temp/1000000 *8。
示例以HCE OS 2.0操作系统为例介绍接收带宽测试的结果:
表2 接收带宽测试的结果记录 云服务器操作系统
HCE OS 2.0
Flavor
xlarge
规格
4U8G
接收带宽
11Gbps
测试发送带宽
- 安装和编译测试工具netperf。
测试发送带宽,需要分别在2台云服务器上安装工具。
- 远程登录云服务器实例。
详细操作,请参见Linux BMS登录方式概述。
- 执行以下命令,下载工具安装包。
- 测试工具。
安装完成后,在一台云服务器上执行以下命令,使其作为服务器(server)端。
netperf -p 5001
然后在另一台作为客户(client)端的云服务器上通过以下命令进行连接并运行测试。
netperf -H [服务器ip地址] -t TCP_STREAM -l 15 -p 5001 -- -m 1440
其中,-l为测试时长,单位为s。
图2 工具测试结果
- 远程登录云服务器实例。
- 测试发送带宽。
- 在client端,执行以下命令。
for i in `seq 5001 5128`; do netserver -p $i & done
其中,-p为测试端口,打流的条数通常为云服务器队列数的2~3倍。
- 在server端,执行以下命令。
for i in `seq 5001 5128`; do netperf -H [client端服务器ip地址] -t TCP_STREAM -l 300 -p $i -- -m 1440 & done
- 在server端,执行以下命令。
sar -n DEV 1 180
表示每1秒采集一次,共采集180s。
测试结束后,观测云服务器发送带宽指标,共测试三次取平均值。
如果测试正常完成,过程中未报错且软件不退出,表示测试结果符合预期。
- 在client端,执行以下命令。
- 查看发送带宽测试结果。
在输出结果中,关注server端服务器的发送带宽结果。
Average中的txkB/s值为接收带宽temp,可以将结果换算成Gbps,换算公式temp/1000000 *8。
示例以HCE OS 2.0操作系统为例介绍发送带宽测试的结果:
表3 发送带宽测试的结果记录 云服务器操作系统
HCE OS 2.0
Flavor
xlarge
规格
4U8G
发送带宽
11Gbps
测试接收PPS
- 安装和编译测试工具iperf。
测试接收PPS,需要分别在2台云服务器上安装工具。
- 远程登录云服务器实例。
详细操作,请参见Linux BMS登录方式概述。
- 执行以下命令,下载工具安装包。
- 测试工具。
安装完成后,在一台云服务器上执行以下命令,使其作为服务器(server)端。
iperf3 -s -p 5001
然后在另一台作为客户(client)端的云服务器上通过以下命令进行连接并运行测试。
iperf3 -c [服务器ip地址] -u -t 300 -l 64 -p 5001
其中,-u为udp测试打流,-t为测试时长,单位为s,-p是打流端口号。
图3 工具测试结果
- 远程登录云服务器实例。
- 测试接收PPS。
- 在server端,执行以下命令。
for i in `seq 5001 5128`; do iperf3 -s -p $i > /dev/null 2>&1 & done
其中,-p为测试端口,打流的条数通常为云服务器队列数的2~3倍。
- 在client端,执行以下命令。
for i in `seq 5001 5128`; do iperf3 -c [server端服务器ip地址] -b 0M -u -t 300 -l 64 -p $i > /dev/null 2>&1 & done
- 在server端,执行以下命令。
sar -n DEV 1 180
表示每1秒采集一次,共采集180s。
测试结束后,观测云服务器接收PPS指标,共测试三次取平均值。
如果测试正常完成,过程中未报错且软件不退出,表示测试结果符合预期。
- 在server端,执行以下命令。
- 查看接收PPS测试结果。
在输出结果中,关注server端服务器的接收PPS结果。
Average中的rxpck/s 值为接收PPS(单位:个)。
示例以HCE OS 2.0操作系统为例介绍接收PPS测试的结果:
表4 接收PPS测试的结果记录 云服务器操作系统
HCE OS 2.0
Flavor
xlarge
规格
4U8G
接收PPS
1001017.45
测试发送PPS
- 安装和编译测试工具iperf。
测试发送PPS,需要分别在2台云服务器上安装工具。
- 远程登录云服务器实例。
详细操作,请参见Linux BMS登录方式概述。
- 执行以下命令,下载工具安装包。
- 测试工具。
安装完成后,在一台云服务器上执行以下命令,使其作为服务器(server)端。
iperf3 -s -p 5001
然后在另一台作为客户(client)端的云服务器上通过以下命令进行连接并运行测试。
iperf3 -c [服务器ip地址] -u -t 300 -l 64 -p 5001
其中,-u为udp测试打流,-t为测试时长,单位为s,-p是打流端口号。
图4 工具测试结果
- 远程登录云服务器实例。
- 测试发送PPS。
- 在client端,执行以下命令。
for i in `seq 5001 5128`; do iperf3 -s -p $i > /dev/null 2>&1 & done
其中,-p为测试端口,打流的条数通常为云服务器队列数的2~3倍。
- 在server端,执行以下命令。
for i in `seq 5001 5128`; do iperf3 -c [client端服务器ip地址] -b 0M -u -t 300 -l 64 -p $i > /dev/null 2>&1 & done
- 在server端,执行以下命令。
sar -n DEV 1 180
表示每1秒采集一次,共采集180s。
测试结束后,观测云服务器发送PPS指标,共测试三次取平均值。
如果测试正常完成,过程中未报错且软件不退出,表示测试结果符合预期。
- 在client端,执行以下命令。
- 查看发送PPS测试结果。
在输出结果中,关注server端服务器的发送PPS结果。
Average中的rxpck/s值为发送PPS(单位:个)。
示例以HCE OS 2.0操作系统为例介绍发送PPS测试的结果:
表5 发送PPS测试的结果记录 云服务器操作系统
HCE OS 2.0
Flavor
xlarge
规格
4U8G
发送PPS
1001028.23
测试新建连接
- 安装和编译测试工具netperf。
测试新建连接,需要分别在2台云服务器上安装工具。
- 远程登录云服务器实例。
详细操作,请参见Linux BMS登录方式概述。
- 执行以下命令,下载工具安装包。
- 测试工具。
安装完成后,在一台云服务器上执行以下命令,使其作为服务器(server)端。
netperf -p 5001
然后在另一台作为客户(client)端的云服务器上通过以下命令进行连接并运行测试。
netperf -H [服务器ip地址] -t TCP_STREAM -l 15 -p 5001 -- -m 1440
其中,-l为测试时长,单位为s。
图5 工具测试结果
- 远程登录云服务器实例。
- 测试新建连接。
- 在server端,执行以下命令。
for i in `seq 9001 9256`; do netserver -p $i & done
其中,-p为测试端口。
- 在client端,执行以下命令。
for i in `seq 9001 9256`; do netperf -H [server端服务器ip地址] -t TCP_CRR -l 20 -p $i -- -r 64 2>&1 >>tcp_crr_22.log & done
- 在client端,执行以下命令。
cat tcp_crr_22.log |grep 20 |awk '{print $6}' |awk '{sum+= $1};END {print sum}'
client端执行步骤2.b的时间>20s后,在client端查看日志,打印出的数据即为新建连接测试结果。
如果测试正常完成,过程中未报错且软件不退出,表示测试结果符合预期。
- 在server端,执行以下命令。
- 查看新建连接测试结果。
在输出结果中,关注client端日志,打印出的数据即为新建连接。
Average中的rxpck/s值为发送PPS(单位:个)。
示例以HCE OS 2.0操作系统为例介绍新建连接测试的结果:
表6 新建连接测试的结果记录 云服务器操作系统
HCE OS 2.0
Flavor
xlarge
规格
4U8G
新建连接
21400.6
测试并发连接
- 安装和注册二进制文件server、client工具。
测试并发连接,需要分别在2台云服务器上安装工具。
- 远程登录云服务器实例。
详细操作,请参见Linux BMS登录方式概述。
- 执行以下命令,下载工具安装包。
wget https://github.com/ideawu/c1000k
- 测试工具。
cd c1000k make chmod 777 client server
- 远程登录云服务器实例。
- 测试并发连接。
- 在server端,执行以下测试步骤。
- 执行以下命令,查看云服务器中的最大连接数。
ulimit -n
- 执行以下命令,修改最大连接数上限。
sysctl -w fs.nr_open=15000000 sysctl -w fs.file-max=15000000 ulimit -n 15000000 echo "fs.nr_open=15000000" >> /etc/sysctl.conf echo "fs.file-max=15000000" >> /etc/sysctl.conf echo "* soft nofile 15000000" >> /etc/security/limits.d/huawei-nofile.conf echo "* hard nofile 15000000" >> /etc/security/limits.d/huawei-nofile.conf echo "* soft nofile 15000000" >> /etc/security/limits.d/20-nproc.conf echo "* hard nofile 15000000" >> /etc/security/limits.d/20-nproc.conf echo "* soft nofile 15000000" >> /etc/security/limits.conf echo "* hard nofile 15000000" >> /etc/security/limits.conf
- 执行以下命令。
for port in $(seq 2000 2000 64000); do ./server $port & done
- 执行以下命令,查看云服务器中的最大连接数。
- 在client端,执行以下测试步骤。
- 执行以下命令,查看云服务器中的最大连接数。
ulimit -n
- 执行以下命令,修改最大连接数上限。
sysctl -w fs.nr_open=15000000 sysctl -w fs.file-max=15000000 ulimit -n 15000000 echo "fs.nr_open=15000000" >> /etc/sysctl.conf echo "fs.file-max=15000000" >> /etc/sysctl.conf echo "* soft nofile 15000000" >> /etc/security/limits.d/huawei-nofile.conf echo "* hard nofile 15000000" >> /etc/security/limits.d/huawei-nofile.conf echo "* soft nofile 15000000" >> /etc/security/limits.d/20-nproc.conf echo "* hard nofile 15000000" >> /etc/security/limits.d/20-nproc.conf echo "* soft nofile 15000000" >> /etc/security/limits.conf echo "* hard nofile 15000000" >> /etc/security/limits.conf
- 执行以下命令。
for port in $(seq 2000 2000 64000); do ./client <server_ip> $port & done
- 执行以下命令,查看云服务器中的最大连接数。
- 在server端,重新打开一个登录窗口,执行以下命令进行观测。
watch "ss -s"
当数据达到最大,且短时间不变即为最大连接。
如果测试正常完成,过程中未报错且软件不退出,表示测试结果符合预期。
- 在server端,执行以下测试步骤。
- 查看并发连接测试结果。
在输出结果中,关注TCP连接数,数据达到最大,且短时间不变即为最大连接,单位:个。
示例以HCE OS 2.0操作系统为例介绍并发连接测试的结果:
表7 并发连接测试的结果记录 云服务器操作系统
HCE OS 2.0
Flavor
xlarge
规格
4U8G
并发连接
150w