《Windows Azure Platform 系列文章目录》
本文介绍如何使用netperf进行PPS (packets per second)压力测试
主要步骤分为一下几点:
1.创建Azure Server VM和Azure Client VM,其中Server VM作为服务器,Client VM对Server发起请求
2.分别在Server VM和Client VM上,都安装netperf
3.在Server VM上启动netserver服务
4.在Client VM上创建压测脚本,并进行压力测试
5.在Server VM上收集日志
具体步骤如下:
1.创建Azure虚拟网络,创建Azure虚拟机,步骤略。
2.选择Azure VM类型为DV5系列,如D4s v5,注意VM的网络设置里,要选择加速网卡
3.分别在Server VM和Client VM上,都安装netperf
yum install gcc make -y yum install sysstat -y mkdir /data cd data wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz tar -zxvf netperf-2.5.0.tar.gz cd netperf-netperf-2.5.0 ./configure make && make install
执行netperf -h和netserver -h命令,确认安装成功
4.在Server VM上启动netserver服务
netserver
5.在Client VM上准备测试脚本,我们生成一个shell文件,叫multi_thread.sh
vi multi_thread.sh
输入下面的内容中,通过使用UDP发起并发请求。
#!/bin/bash host_ip=$1 time_elapsed=$2 thread_count=$3 for i in $(seq 1 $thread_count) { netperf -H $host_ip -t UDP_STREAM -l $time_elapsed -- -m 1 -R 1 & }
TCP_STREAM:client端向server端发送批量TCP数据
UDP_STREAM:client端向server端发送批量UDP数据
TCP_RR和TCP_CRR:前者是在同一个连接中进行多次request和response请求(并发),后者(新建)是每次请求新建一个连接(HTTP)
UDP_RR:使用UDP进行request和response请求
6.在Client VM上执行脚本
./multi-thread [ServerVM的内网IP地址] [测试持续时间秒] [测试线程数]
7.在Server VM上执行脚本
下面的脚本中,DEV显示网络接口信息,每1秒钟取1次值,一共执行1100秒。把结果输出到txt文件里
sar -n DEV 1 -t 1100 > 4core_1thread_20minutes.txt
输出结果类似以下信息:
11:02:57 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
11:02:58 AM eth1 15.00 20.00 3.61 5.86 0.00 0.00 0.00 0.00
11:02:58 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:02:58 AM eth0 14.00 19.00 3.35 5.80 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
Average: eth1 5091163.97 5.36 298311.54 1.53 0.00 0.00 0.00 2.44
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 5091163.58 5.05 228705.77 1.51 0.00 0.00 0.00 1.87
其中:
IFACE:网络接口
rxpck/s:每秒钟接收的数据包
txpck/s:每秒钟发送的数据包
rxbyt/s:每秒钟接收的字节数
txbyt/s:每秒钟发送的字节数
rxcmp/s:每秒钟接收的压缩数据包
txcmp/s:每秒钟发送的压缩数据包
rxmcst/s:每秒钟接收的多播数据包