netperf介绍
netperf是一个基于client-server模式的网络测试工具,可以测量TCP和UDP传输的吞吐量、时延、CPU占用率等性能参数。它可以测试以下几种模式的TCP核UDP网络性能:
- TCP_STREAM:client端向server端发送批量TCP数据
- UDP_STREAM:client端向server端发送批量UDP数据
- TCP_RR和TCP_CRR:前者是在同一个连接中进行多次request和response请求,后者是每次请求新建一个连接(HTTP)
- UDP_RR:使用UDP进行request和response请求
安装
通常情况下netperf安装有两种方法:
apt-get install netperf
- 通过安装包进行安装,下载地址:http://download.csdn.net/download/changzhi1990/6912125
安装方法:
tzr zxvf netperf-2.6.0.tar.gz
cd netperf-2.6.0
./configure
make
make install
安装完成后,可通过如下命令查看是否安装成功:
常用参数
netperf在使用时需要设置不同参数模拟不同场景。
常用参数如下:
-t:设置netperf工作模式,包括TCP_STREAM、UDP_STREAM、TCP_CRR、TCP_RR、UDP_RR
-H:netserver的IP地址
-p:指定netserver的端口号
-l:设置测试时间
除此之外,还有一些备选参数可根据实际需求进行选择。备选参数前面有个前缀“--”:
-m:批量传输时设置传输数据包大小
-r:请求应答模式测试时发送数据包大小和接收数据包大小
-O:自定义输出结果,可在其中添加时延、90值、99值、吞吐量、CPU使用率等信息
使用方法
server端
server端通过以下命令启动即可:
netserver
client端
netperf -t TCP_STREAM -H $netserver_ip -p $PORT -l $testtime -- -m $datagram_size
netperf -t TCP_RR -H $netserver_ip -l $testtime -p $PORT -- -r $req_size,$rsp_size
netperf -t UDP_STREAM -H $netserver_ip -l $testtime -- -m $datagram_size
netperf -t TCP_RR -H netserverip−ltesttime -p PORT−−−rreq_size,$rsp_size
默认的输出结果中,只有吞吐量一个性能指标,如果需要得到网络的时延等信息,可通过‘-O’等参数个性化定制:
netperf -t UDP_STREAM -H $netserver_ip -l $testtime -- -m $datagram_size -O "MIN_LAETENCY,MAX_LATENCY,MEAN_LATENCY,P90_LATENCY,P99_LATENCY,THROUGHPUT,THROUGHPUT_UNITS"
常见问题
以下几个问题是在netperf使用时遇到较多的几个问题:
如果netserver启动时端口被占用,则会报以下错误:
Unable to start netserver with 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC
解决方法:
指定一个未使用的端口给netserver,如:
netserver -p 49999
解决方法:netperf在设计时关闭了此功能,需要通过额外参数进行打开‘-R 1’,如:
netperf -t TCP_STREAM -H $netserver_ip -P $PORT -l $testtime -- -R 1 -m $datagram_size
以上既是netperf在使用时的一些个人总结,由于能力有限,难免存在不足。
网易云新用户大礼包:https://www.163yun.com/gift
本文来自网易实践者社区,经作者季涛授权发布。