Alliot's blog

服务器性能测试系列(二):Netperf网络性能测试

Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多块的速度接收数据。Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。
安装与测试分服务端与客户端,均安装Netperf:

获取源码

执行:

1
wget ftp://ftp.netperf.org/netperf/netperf-2.7.0.tar.gz

解压

执行:

1
cd netperf-2.7.0

1
./configure
1
make
1
make install

服务器端

运行

1
netserver

netsever

客户端

运行:

1
netperf -H host -l 60 -t TCP_STREAM

netperf

结果分析

如下:
结果分析


命令参数拓展:

1
2
3
4
5
-H host: 指定远端运行netserver的server ip地址
-l testlen: 指定测试的时间长度(秒)
-t testname: 指定进行的测试类型,包括TCP_STREAM, UDP_STREAM, TCP_RR,UDP_RR, TCP_CRR

测试类型:

TCP_STREAM

测试TCP流式通讯时的网络带宽,这是netperf的default测试类型。
测试结果表明,TCP带宽

UDP_STREAM

测试UDP流式通讯时的网络带宽。值得注意的是,UDP测试时,需要确保发送端数据缓冲区不能大于接收端缓冲区,否则肯定会出现数据包丢失,造成测试结果不准确。-m参数用来指定发送端缓冲区大小,-M参数用来指定接收端缓冲区大小。
第一行结果是本地的发送统计,也就是本地发送UDP的吞吐量,第二行是server端的接收统计。

TCP_RR

在一次TCP连接中,client端和server端的transaction次数。
测试结果中,第一行是本地统计结果,第二行是远端统计结果。

UDP_RR

在基于UDP的连接中,client端和server端的transaction次数。
同样地,测试结果中,第一二行分别是本地和远端统计结果。


常见问题解决方法

1、提示:

1
2
establish control: are you sure there is a netserver listening on *.*.*.* at port 12865?
establish_control could not establish the control connection from 0.0.0.0 port 0 address

这是由于服务器端防火墙未放行导致的,临时禁用一下防火墙即可,执行:

1
service iptables stop

如果此文为您解决燃眉之急或是带来些许明朗,不妨打赏Alliot一杯香茗或是一杯咖啡