前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >一款强大的压测带宽工具-iperf3

一款强大的压测带宽工具-iperf3

原创
作者头像
隔壁没老王
发布2025-01-18 22:11:44
发布2025-01-18 22:11:44
1850
举报

本文压测主要用到iperf3命令,查看网络情况使用sar命令。

iperf3压测需要用到2台机器,1台server,1台client。


iperf3

Iperf3是一个广泛使用的网络性能测量和调整工具。它的意义在于它是一个跨平台的工具,可以为任何网络提供标准化的性能测量。Iperf3具有客户端和服务器功能,可以创建数据流来测量两端之间单向或双向的网络吞吐量。典型的iperf3输出包含一个有时间标记的数据传输量和吞吐量测量的报告。

代码语言:shell
复制
安装命令:yum install iperf3

常用参数:
服务器/客户端:
-p、 --端口#要侦听/连接的服务器端口
-i、 --周期性带宽报告之间的间隔秒数
-V、 --详细的输出

服务器:
-s、 --服务器以服务器模式运行
-D、 --daemon以守护进程的身份运行服务器

客户端:
-c、 --客户端<host>在客户端模式下运行,连接到<host>
-u、 --udp使用udp而不是TCP
-b、 --带宽#[KMG][/#]目标带宽,单位为比特/秒(0表示无限制)
(UDP默认为1 Mbit/sec,TCP无限制)
-t、 --time#传输时间(秒)(默认10秒)
-P、 --parallel#要运行的并行客户端流的数量,一般指定网卡队列数量
查看网卡数量可参考:https://cloud.tencent.com/document/product/213/68396
-R、 --以反向模式反向运行(服务器发送,客户端接收)

sar

sar命令(System Activity Reporter)是一个用于监视Linux系统性能的工具,能够收集和报告CPU使用率、内存使用情况、磁盘I/O、网络流量和进程活动等关键性能指标。‌

代码语言:shell
复制
安装命令: yum install sysstat  

常用选项:
-u:监视CPU的利用率。
-r:监视内存的使用情况。
-b:监视磁盘I/O的负载。
-n:监视网络流量。
-d:监视设备的I/O负载。
-P:监视每个CPU的利用率

查看网络:
# sar -n DEV  1 3
# 1秒打印一次,总共打印3次

[root@test ~]# sar -n DEV  1 1
Linux 3.10.0-1160.119.1.el7.x86_64 (test)       01/18/2025      _x86_64_        (2 CPU)

08:45:19 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
08:45:20 PM      eth0     11.00      8.00      0.82      1.18      0.00      0.00      0.00
08:45:20 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08:45:20 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:         eth0     11.00      8.00      0.82      1.18      0.00      0.00      0.00
Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

# 输出结果
rxpck/s :每秒收包量,即接收 pps
txpck/s :每秒发包量,即发送 pps
rxkB/s  :接收带宽
txkB/s  :发送带宽

tcp压测

server端:

代码语言:shell
复制
[root@test ~]# iperf3 -s -i 1
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 172.21.201.8, port 42452
[  5] local 172.21.80.47 port 5201 connected to 172.21.201.8 port 42454
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec   240 MBytes  2.01 Gbits/sec                  
[  5]   1.00-2.00   sec   189 MBytes  1.58 Gbits/sec                  
[  5]   2.00-3.00   sec   173 MBytes  1.45 Gbits/sec                  
[  5]   3.00-4.00   sec   189 MBytes  1.59 Gbits/sec                  
[  5]   4.00-5.00   sec   184 MBytes  1.54 Gbits/sec                  
[  5]   5.00-6.00   sec   175 MBytes  1.47 Gbits/sec                  
[  5]   6.00-7.00   sec   196 MBytes  1.65 Gbits/sec                  
[  5]   7.00-8.00   sec   167 MBytes  1.40 Gbits/sec                  
[  5]   8.00-9.00   sec   199 MBytes  1.67 Gbits/sec                  
[  5]   9.00-10.00  sec   181 MBytes  1.52 Gbits/sec                  
[  5]  10.00-10.04  sec  6.81 MBytes  1.49 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.04  sec  1.86 GBytes  1.59 Gbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

client端:

代码语言:shell
复制
[root@test2 ~]# iperf3 -c 172.21.80.47  -t 10  -i 1 -P 2
Connecting to host 172.21.80.47, port 5201
[  4] local 172.21.201.8 port 42454 connected to 172.21.80.47 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   251 MBytes  2.11 Gbits/sec  1701    414 KBytes       
[  4]   1.00-2.00   sec   185 MBytes  1.55 Gbits/sec  299    205 KBytes       
[  4]   2.00-3.00   sec   172 MBytes  1.45 Gbits/sec  136    232 KBytes       
[  4]   3.00-4.00   sec   192 MBytes  1.61 Gbits/sec  197    350 KBytes       
[  4]   4.00-5.00   sec   186 MBytes  1.56 Gbits/sec   54    490 KBytes       
[  4]   5.00-6.00   sec   172 MBytes  1.45 Gbits/sec  215    360 KBytes       
[  4]   6.00-7.00   sec   196 MBytes  1.65 Gbits/sec  248    346 KBytes       
[  4]   7.00-8.00   sec   168 MBytes  1.41 Gbits/sec  210    379 KBytes       
[  4]   8.00-9.00   sec   199 MBytes  1.67 Gbits/sec  433    346 KBytes       
[  4]   9.00-10.00  sec   181 MBytes  1.52 Gbits/sec  126    335 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  1.86 GBytes  1.60 Gbits/sec  3619             sender
[  4]   0.00-10.00  sec  1.86 GBytes  1.59 Gbits/sec                  receiver

iperf Done.
  • 使用sar命令同步查看实际带宽数据
代码语言:shell
复制
server端:
08:59:44 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
08:59:45 PM      eth0 139062.00   7065.00 200710.89    456.58      0.00      0.00      0.00
08:59:45 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08:59:45 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

08:59:45 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
08:59:46 PM      eth0 133455.00   6818.00 192611.24    442.04      0.00      0.00      0.00
08:59:46 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08:59:46 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

client端:
08:59:46 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
08:59:47 PM      eth0   7029.00   3208.00    454.01 190815.61      0.00      0.00      0.00
08:59:47 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

08:59:47 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
08:59:48 PM      eth0   7129.00   3317.00    460.37 195332.24      0.00      0.00      0.00
08:59:48 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
  • 从压测结果来看,能压测到200MB/s左右,server端是接受,client端是发送。

udp压测

需要指定带宽,因为UDP默认为1 Mbit/sec,TCP无限制。


server端:

代码语言:shell
复制
[root@test ~]# iperf3 -s -i 1 
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 172.21.201.8, port 43496
[  5] local 172.21.80.47 port 5201 connected to 172.21.201.8 port 54999
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  5]   0.00-1.00   sec   142 MBytes  1.19 Gbits/sec  0.003 ms  62683/167825 (37%)  
[  5]   1.00-2.00   sec   104 MBytes   868 Mbits/sec  0.007 ms  99102/175970 (56%)  
[  5]   2.00-3.00   sec   104 MBytes   872 Mbits/sec  0.002 ms  100070/177303 (56%)  
[  5]   3.00-4.00   sec   103 MBytes   868 Mbits/sec  0.002 ms  99867/176681 (57%)  
[  5]   4.00-5.00   sec   117 MBytes   981 Mbits/sec  0.005 ms  89792/176662 (51%)  
[  5]   5.00-6.00   sec   124 MBytes  1.04 Gbits/sec  0.001 ms  85300/177227 (48%)  
[  5]   6.00-7.00   sec   106 MBytes   891 Mbits/sec  0.001 ms  100031/178909 (56%)  
[  5]   7.00-8.00   sec   104 MBytes   869 Mbits/sec  0.002 ms  99305/176269 (56%)  
[  5]   8.00-9.00   sec  92.3 MBytes   774 Mbits/sec  0.002 ms  107295/175844 (61%)  
[  5]   9.00-10.00  sec   116 MBytes   970 Mbits/sec  0.001 ms  91942/177787 (52%)  
[  5]  10.00-10.04  sec  0.00 Bytes  0.00 bits/sec  0.001 ms  0/0 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec  0.001 ms  935387/1760477 (53%)  
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

client端:

代码语言:shell
复制
[root@test2 ~]# iperf3 -c 172.21.80.47  -t 10  -i 1 -P 2-u -b 2000M
Connecting to host 172.21.80.47, port 5201
[  4] local 172.21.201.8 port 54999 connected to 172.21.80.47 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   226 MBytes  1.90 Gbits/sec  167829  
[  4]   1.00-2.00   sec   237 MBytes  1.99 Gbits/sec  176118  
[  4]   2.00-3.00   sec   239 MBytes  2.00 Gbits/sec  177165  
[  4]   3.00-4.00   sec   238 MBytes  2.00 Gbits/sec  176667  
[  4]   4.00-5.00   sec   238 MBytes  2.00 Gbits/sec  176797  
[  4]   5.00-6.00   sec   239 MBytes  2.00 Gbits/sec  177225  
[  4]   6.00-7.00   sec   241 MBytes  2.02 Gbits/sec  179052  
[  4]   7.00-8.00   sec   237 MBytes  1.99 Gbits/sec  176035  
[  4]   8.00-9.00   sec   237 MBytes  1.99 Gbits/sec  176099  
[  4]   9.00-10.00  sec   239 MBytes  2.01 Gbits/sec  177527  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  2.32 GBytes  1.99 Gbits/sec  0.001 ms  935387/1760477 (53%)  
[  4] Sent 1760477 datagrams

iperf Done.

多端口压测

如果主机带宽较高,使用上面的方法可能压测不到上限,可以使用for循环开多个端口压测。

server端:

代码语言:shell
复制
[root@test ~]# for port in {10001..10005}; do iperf3 -s -p $port -D; done
[root@test ~]# 
[root@test ~]# 启动5个端口监听
[root@test ~]# netstat  -ntplu | grep iperf
tcp6       0      0 :::10001                :::*                    LISTEN      9347/iperf3         
tcp6       0      0 :::10002                :::*                    LISTEN      9349/iperf3         
tcp6       0      0 :::10003                :::*                    LISTEN      9351/iperf3         
tcp6       0      0 :::10004                :::*                    LISTEN      9353/iperf3         
tcp6       0      0 :::10005                :::*                    LISTEN      9355/iperf3     

client端:

代码语言:shell
复制
[root@test2 ~]# for port in {10001..10005}; do nohup iperf3 -c 172.21.80.47  -t 1000 -P 2 -p $port > output.log 2>&1 & done
[1] 9150
[2] 9151
[3] 9152
[4] 9153
[5] 9154
[root@test2 ~]# 
[root@test2 ~]# ps aux  | grep iperf3
root      9150  0.6  0.0   9872  1108 pts/10   S    21:45   0:00 iperf3 -c 172.21.80.47 -t 1000 -P 2 -p 10001
root      9151  0.5  0.0   9872  1108 pts/10   S    21:45   0:00 iperf3 -c 172.21.80.47 -t 1000 -P 2 -p 10002
root      9152  0.6  0.0   9872  1108 pts/10   S    21:45   0:00 iperf3 -c 172.21.80.47 -t 1000 -P 2 -p 10003
root      9153  0.5  0.0   9872  1108 pts/10   S    21:45   0:00 iperf3 -c 172.21.80.47 -t 1000 -P 2 -p 10004
root      9154  0.6  0.0   9872  1108 pts/10   S    21:45   0:00 iperf3 -c 172.21.80.47 -t 1000 -P 2 -p 10005
root      9302  0.0  0.0 112812   972 pts/10   S+   21:45   0:00 grep --color=auto iperf3
[root@test2 ~]# 
  • 使用sar命令同步查看实际带宽数据
代码语言:shell
复制
[root@test2 ~]# sar -n DEV 1 3
Linux 3.10.0-1160.119.1.el7.x86_64 (test2)      01/18/2025      _x86_64_        (2 CPU)

09:46:31 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09:46:32 PM      eth0   9838.00  10786.00    639.09 192362.48      0.00      0.00      0.00
09:46:32 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09:46:32 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09:46:33 PM      eth0   8736.00   9698.00    568.24 189571.49      0.00      0.00      0.00
09:46:33 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09:46:33 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09:46:34 PM      eth0   7843.00   9457.00    510.76 193750.48      0.00      0.00      0.00
09:46:34 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:         eth0   8805.67   9980.33    572.70 191894.82      0.00      0.00      0.00
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
[root@test2 ~]# 
  • 补充 如果在压测server端时带宽较高压测不到上限,也可以在server端多开一些监听端口,用多台client同时压测server。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • iperf3
  • sar
  • tcp压测
  • udp压测
  • 多端口压测
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档