iperf命令是一个网络性能测试工具,可以测试TCP和UDP带宽质量。同时也可以通过UDP测试报告网丢包率或者发包性能,是一个非常实用的工具
iperf安装:
可以直接通过官网下载对应系统版本进行安装(https://iperf.fr/iperf-download.php)
1.对于windows版的iPerf,直接将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可
2.对于linux版的iPerf,请使用如下命令安装
rpm -ivh iperf-.rpm
常用参数指南(详见附录):
-c/s:客户端模式/服务端模式
-p:指定iperf测试端口
-i:指定报告间隔
-b:设置UDP的发送带宽,单位bit/s
-t:设置测试的时长,单位为秒,不设置默认10s
-l:指定包大小,TCP默认8k,UDP默认1470字节
带宽性能测试:
1、针对TCP进行带宽性能测试
服务端命令:iperf -s -i 1 -p 3389
客户端命令:iperf -c 172.19.16.97 -p 3389 -i 1
2、针对UDP进行带宽性能测试
带宽性能压测通常采用udp模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
本次测试机器为腾讯云标准网络优化型实例(S2ne.LARGE8),内网带宽性能可以支撑1.5Gbps;
服务端命令
iperf -u -s -i 1 -p 3389
客户端命令
1、iperf -u -c 172.19.16.97 -p 3389 -b 1500M -i 1
2、iperf -u -c 172.19.16.97 -p 3389 -b 2000M -i 1
测试可以看出,在测试带宽到达官网保证的1.5Gbps的时候,网络性能良好,是没有出现丢包的,当带宽跑到2Gbps的时候,会发现由于带宽超限,已经出现明显的丢包现象。
网络收发包性能测试:
通过UDP发包测试不仅可以通过-b xxxM的形式测试实例的带宽性能情况,还可以通过-b xxxpps测试实例的收发包性能,这里还是选用腾讯云标准网络优化型实例(S2ne.LARGE8),官网承诺收发包量为30Wpps进行测试
需要注意的是,网络收发包量的测试同时还会受到缓冲区大小的影响,默认的缓冲区比较小的话,会造成实例到达高pps丢包的现象,这里建议在测试前调整下缓冲区大小;同时由于UDP默认发包大小为1470字节,在发包量很高的情况会超出实例的带宽限制,所以这里需-l 指定发包大小,本次测试采用-l 100bit
1、调整UDP缓冲区大小
vi /etc/sysctl.conf
添加
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
然后执行sysctl -p 使得参数生效(不重启刷新参数)
2、进行测试
服务端命令
iperf -u -s -i 1 -p 3389
客户端命令
iperf -u -c 172.19.16.97 -b 300000pps -l 100bit -i 1 -p 3389
iperf -u -c 172.19.16.97 -b 320000pps -l 100bit -i 1 -p 3389
通过测试可以发现,实例在官网承诺的30Wpps进行收发包测试的时候是没有丢包现象的,当测试收发包到达32Wpps的时候已经开始出现丢包现象了,所以这里建议在选用实例的过程中,尽量根据业务的实际情况选择,尽量避免实例在瓶颈期使用。