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请求
1、wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
2、tar zxvf netperf-2.5.0.tar.gz
3、netperf-netperf-2.5.0
4、yum install gcc cc -y
5、./configure
6、make && make install
7、检查是否安装成功(netperf -V)
server端:
netserver
client端:
测试TCP_STREAM(TCP并发):
netperf -t TCP_STREAM -H $netserver_ip -p $PORT -l $testtime -- -m $datagram_size
测试TCP_RR(同一个IP并发):
netperf -t TCP_RR -H $netserver_ip -l $testtime -p $PORT -- -r $req_size,$rsp_size
测试UDP_STREAM:
netperf -t UDP_STREAM -H $netserver_ip -l $testtime -- -m $datagram_size
常用参数如下:
-t:设置netperf工作模式,包括TCP_STREAM、UDP_STREAM、TCP_CRR、TCP_RR、UDP_RR
-H:netserver的IP地址
-p:指定netserver的端口号
-l:设置测试时间
-m:批量传输时设置传输数据包大小
-r:请求应答模式测试时发送数据包大小和接收数据包大小
-O:自定义输出结果,可在其中添加时延、90值、99值、吞吐量、CPU使用率等信息
netserver启动报错:
如果netserver启动时端口被占用,则会报以下错误:
Unable to start netserver with 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC
解决方法:
指定一个未使用的端口给netserver,如:
netserver -p 49999
不同子网下的主机使用netperf时连接超时:
netperf在设计时关闭了此功能,需要通过额外参数进行打开‘-R 1’,如:
netperf -t TCP_STREAM -H $netserver_ip -P $PORT -l $testtime -- -R 1 -m $datagram_size
带宽测试:
带宽测试:client向server发送32kb大包:
netperf -t TCP_STREAM -H $server_ip_public -l $test_time -- -m 32k "MAX_LATENCY,MEAN_LATENCY,P90_LATENCY,P99_LATENCY,P999_LATENCY,P9999_LATENCY,STDDEV_LATENCY,THROUGHPUT,THROUGHPUT_UNITS"
延迟测试:
长连接:
netperf -t TCP_RR -H -H $server_ip_public -l $test_time -- -r $packet_size -O " MIN_LAETENCY, MAX_LATENCY, MEAN_LATENCY, P90_LATENCY, P99_LATENCY ,P999_LATENCY,P9999_LATENCY,STDDEV_LATENCY ,THROUGHPUT ,THROUGHPUT_UNITS "
短连接:
netperf -t TCP_CRR -H -H $server_ip_public -l $test_time -- -r $packet_size -O " MIN_LAETENCY, MAX_LATENCY, MEAN_LATENCY, P90_LATENCY, P99_LATENCY ,P999_LATENCY,P9999_LATENCY,STDDEV_LATENCY ,THROUGHPUT ,THROUGHPUT_UNITS"
PPS测试:
client 端:
netperf -H $server_ip_public -p $port -t UDP_STREAM -l 300 -- -m 1 -R 1
server端:
netserver -p $port