云主机TCP PPS测试方法

废话连篇开端

阿里云官方提供的测试例,用的是udp协议进行pps测试,其实这种方法是有道理的,udp pps更纯粹也更能体现出pps能力,适合于通用测试场景。

但是使用后云主机业务基本都是TCP协议,如果能采用TCP协议进行PPS测试,可谓是更接近用户使用性能,也更能发现云主机和云主机所在host主机性能瓶颈进行调优工作。

作为研发工作者,我认为通用场景也要做,但是仅仅通用场景并不能说明问题,最终目标是为了满足使用者使用要求,所以测试pps一定不能武断的只使用udp进行测试。

额外想说的是:“在调试前只要方法有效,适用于当前场景业务的调优方法都应该被考虑进去,调优不仅仅技术活,应该增强其实践性”

下面是尝过痛楚才考虑也应该使用tcp 进行pps测试,写出其中一种测试方法共勉之。

步骤1:测试机器和被测试机器安装

1
2
3
4
5
6
7
8
9
10
git clone https://github.com/esnet/iperf.git
cd iperf
git checkout 3.1-STABLE
./configure --prefix=/root/iperfhome
make
make install
$ sudo vi /etc/ld.so.conf
/root/iperfhome/lib
# ldconfig
# ldconfig -p |grep iperf

注意:因为涉及到编译和git下载,需要预先安装git和gcc;centos系统可执行

yum install gcc git -y

步骤2:服务端开启iperf程序

1
2
3
./iperfhome/bin/iperf3 -p 8181 -f M -i 3 -B 0.0.0.0 -V --logfile /tmp/iperf.log -s -D

tail -f -n 1 /tmp/iperf.log

说明:这种在后台启动服务端,尽量做到对主机侧影响较小

步骤3:客户端开始流量测试

1
./iperfhome/bin/iperf3 -c xxx.xxx.xxx.xxx -p 8181 -b 0 -t 100 -P 64 -i 3 -M 90

注意⚠️:可以指定并行度,测试tcp或udp, 缓冲区的大小,TCP窗口的大小,MTU大小,堵塞控制算法

步骤4:观察云主机的pps情况

sar -n DEV 1 10000