文章

网络pps测试

网络pps测试

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

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

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

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

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

安装软件包

yum install iperf3

服务端

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

sar -n DEV 1 10000

接收端

iperf3 -s -i 1 -p 16000

发送端

iperf3 -u -l 16 -b 100m -t 120 -c 192.168.10.10 -i 1 -p 16000 -A 1
主要参数参数说明

| :———: | :——— |

-s表示作为server端接收包。
-i间隔多久输出信息流量信息,默认单位为秒。
-p指定服务的监听端口。
-u表示采用UDP协议发送报文,不带该参数表示采用TCP协议。
-l表示包大小,默认单位为Byte。通常测试PPS的时候该值为46,测试bps时该值为1500。
-b设定流量带宽,可选单位包括:k/m/g。
-t流量的持续时间,默认单位为秒。
-ACPU亲和性,可以将具体的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
字段含义

| ——— | —– |

Transfer传送的总数据量
Bandwidth带宽大小
Jitter波动率
Lost/Total丢包/总报文数
Datagrams丢包率
本文由作者按照 CC BY 4.0 进行授权