一
阿里云官方提供的测试例,用的是udp协议进行pps测试,其实这种方法是有道理的,udp pps更纯粹也更能体现出pps能力,适合于通用测试场景。
但是使用后云主机业务基本都是TCP协议,如果能采用TCP协议进行PPS测试,可谓是更接近用户使用性能,也更能发现云主机和云主机所在host主机性能瓶颈进行调优工作。
作为研发工作者,我认为通用场景也要做,但是仅仅通用场景并不能说明问题,最终目标是为了满足使用者使用要求,所以测试pps一定不能武断的只使用udp进行测试。
额外想说的是:“在调试前只要方法有效,适用于当前场景业务的调优方法都应该被考虑进去,调优不仅仅技术活,应该增强其实践性”
下面是尝过痛楚才考虑也应该使用tcp 进行pps测试,写出其中一种测试方法共勉之。
安装软件包
服务端
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
// 说明:这种在后台启动服务端,尽量做到对主机侧影响较小
客户端开始流量测试
iperf3 -c xxx.xxx.xxx.xxx -p 8181 -b 0 -t 100 -P 64 -i 3 -M 90 //注意⚠️:可以指定并行度,测试tcp或udp, 缓冲区的大小,TCP窗口的大小,MTU大小,堵塞控制算法
观察主机pps
二
接收端
发送端
iperf3 -u -l 16 -b 100m -t 120 -c 192.168.10.10 -i 1 -p 16000 -A 1
| :———: | :——— |
| -u | 表示采用UDP协议发送报文,不带该参数表示采用TCP协议。 |
| -l | 表示包大小,默认单位为Byte。通常测试PPS的时候该值为46,测试bps时该值为1500。 |
| -A | CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑 CPU,避免iperf进程在不同的CPU间调度。 |
输出说明
[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
| ——— | —– |