iperf
是一个网络性能测试工具,做服务开发或者测试的同学,接触的可能比较多。因为最近有用到这个工具,并且这个工具做的非常不错,这里记录一下工具的使用方法。iperf
是个开源并且跨平台的软件,代码托管在 GitHub 上,可以从 Releases 找到各个发行版本,也可以去 官网 下载各个平台的版本。 使用 iperf
时,需要分别运行服务端和客户端,在测试是最好保证两个端的软件版本一致,这样会免去一些没必要的麻烦。
下载好后,可以先在本机做一个简单的回环测试,结果如下:
|
|
默认情况下,会使用 TCP 连接,绑定在 5001 端口上,可以从上述结果看到,当前本机的带宽为 30.1 Gbits/sec
。
主要参数信息
适用于 服务端/客户端
|
|
适用于 服务端
|
|
适用于 客服端
|
|
- 用 -u 参数来指定使用 UDP 协议,需要在 -p 参数之前指定
- 测试之前确保防火墙为关闭状态
网络性能测试
TCP 协议测试带宽
|
|
使用 TCP 协议进行测试时,需要注意的就是 TCP 窗口大小,可以使用 -w
参数指定,网络通道的容量 capacity = bandwidth * round-trip time
,而理论 TCP 窗口大小就是网络通道的容量。例如,网络带宽为 40Mbit/s
,回环路径消耗时间是 2ms,那么 TCP 的窗口大小不小于 40Mbit/s×2ms = 80kbit = 10Kbytes
。
UDP 协议测试带宽
|
|
上述命令指定了客户端以 30Mbit/s
速度发送数据,由于 UDP 协议是无连接不可靠的,并且只管发包,不确保包在服务端是否接收到,所以需要查看服务报告才能确定当前网络性能数据。如果在不知道当前网络带宽的情况下,需要不断的调整参数值,并且查看丢包率,来确定当前网络性能情况。如果你当前是远程登录到服务器上进行测试的,可以从小到大的方式进行测试,否则很容易导致服务当前带宽被占满。