网速测试利器-iperf3

2024-05-05 21:18
文章标签 测试 利器 网速 iperf3

本文主要是介绍网速测试利器-iperf3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

iperf3是一个网络速度测试工具,支持IPv4与IPv6,支持TCP、UDP、SCTP传输协议,可在Windows、Mac OS X、Linux、FreeBSD等各种平台使用,是一个简单又实用的小工具。 本文介绍安装、使用iperf3 网速测试工具。

安装iperf3

iperf3本身是以C++所开发的小程序,在官网https://iperf.fr/iperf-download.php上有提供各种平台的预编译二进制文件,解压缩后即可使用。

在CentOS 7上使用下列命令即可安装:

yum install iperf3

MAC OS X上使用下列命令即可安装:

brew  install iperf3

网络带宽测试

在使用iperf3测试时,要同时在server端与client端都各执行一个程序,让它们互相传送报文进行测试。下面的例子是在CentOS7上进行的测试。

首先在10.23.5.66机器启动server端的程序:

iperf3 -s

接着在10.23.5.65服务器上执行client 端的程序:

iperf3 -c 10.23.5.66

在测试时server端与client端都会出现测试的数据,client端以下是测试的结果:

[jinguang1@localhost ~]$ iperf3 -c 10.23.5.66
Connecting to host 10.23.5.66, port 5201
[  4] local 10.23.5.65 port 10412 connected to 10.23.5.66 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   114 MBytes   953 Mbits/sec    0   95.5 KBytes
[  4]   1.00-2.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes
[  4]   2.00-3.00   sec   113 MBytes   950 Mbits/sec    0   95.5 KBytes
[  4]   3.00-4.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes
[  4]   4.00-5.00   sec   113 MBytes   950 Mbits/sec    0   95.5 KBytes
[  4]   5.00-6.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes
[  4]   6.00-7.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes
[  4]   7.00-8.00   sec   113 MBytes   950 Mbits/sec    0   95.5 KBytes
[  4]   8.00-9.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes
[  4]   9.00-10.00  sec   113 MBytes   950 Mbits/sec    0   95.5 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  1.10 GBytes   949 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  1.10 GBytes   949 Mbits/sec                  receiveriperf Done.

从打印的内容看,缺省参数下,Client将连接Server端的5201端口,持续向Server端发送数据,并统计出每秒传输的字节数、带宽、出现报文重传的次数、拥塞窗口(Congestion Window)大小,整个测试将持续10秒钟;最后将汇总10秒的平均数据,并给出发送和接收端的统计。

接下来分析一下Server的测试输出结果:

[jinguang1@localhost ~]$ iperf3 -s
warning: this system does not seem to support IPv6 - trying IPv4
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 10.23.5.65, port 10410
[  5] local 10.23.5.66 port 5201 connected to 10.23.5.65 port 10412
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec   109 MBytes   913 Mbits/sec
[  5]   1.00-2.00   sec   113 MBytes   948 Mbits/sec
[  5]   2.00-3.00   sec   113 MBytes   949 Mbits/sec
[  5]   3.00-4.00   sec   113 MBytes   949 Mbits/sec
[  5]   4.00-5.00   sec   113 MBytes   949 Mbits/sec
[  5]   5.00-6.00   sec   113 MBytes   949 Mbits/sec
[  5]   6.00-7.00   sec   113 MBytes   949 Mbits/sec
[  5]   7.00-8.00   sec   113 MBytes   949 Mbits/sec
[  5]   8.00-9.00   sec   113 MBytes   949 Mbits/sec
[  5]   9.00-10.00  sec   113 MBytes   949 Mbits/sec
[  5]  10.00-10.04  sec  4.29 MBytes   947 Mbits/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.10 GBytes   945 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

Server端缺省监听IPv6地址和端口,如果未配置IPv6,会尝试IPv4。日志显示接收了来自10.23.5.65,源端口未10410的测试请求。Client端连续进行了10秒的测试,并显示了每秒传输的字节数,带宽信息;测试结束后会汇总发送和接收的统计信息。在Client连接关闭之后会继续侦听5201端口。

iperf3 进阶指令

iperf3 所提供的选项非常多,以下介绍一些常用的参数。

1. 测试时间和输出统计数据间隔

-t参数可以指定传输测试的持续时间,而-i可以指定统计输出的间隔时间,如需要持续测试一个小时,每10秒钟打印一次输出结果:

iperf3 -c server_ip -i 10 -t 3600

2. 储存测试结果

--logfile参数可以将输出的测试结果储存至文件中:

iperf3 -c server_ip --logfile stats.txt

3. 设定侦听端口

iperf3缺省使用5201端口,如果需要指定,可以使用-p参数。这需要在Server和Client侧都需要进行指定,如使用12345端口:

#server侧
iperf3 -s -p 12345
#client侧
iperf3 -c server_ip -p 12345

4. JSON 格式输出

如果需要做一些自动化方面测试和管理工作,需要读取格式化的测试结果,那可以选择-J参数,来输出JSON格式测试结果。

[jinguang1@localhost ~]$ iperf3 -c 10.23.5.66 -J -t 2
{"start":	{"connected":	[{"socket":	4,"local_host":	"10.23.5.65","local_port":	13346,"remote_host":	"10.23.5.66","remote_port":	5201}],"version":	"iperf 3.1.7","system_info":	"Linux localhost.localdomain 3.10.0-862.9.1.el7.x86_64 #1 SMP Mon Jul 16 16:29:36 UTC 2018 x86_64","timestamp":	{"time":	"Fri, 07 Sep 2018 01:31:45 GMT","timesecs":	1536283905},"connecting_to":	{"host":	"10.23.5.66","port":	5201},"cookie":	"localhost.localdomain.1536283905.522","tcp_mss_default":	1460,"test_start":	{"protocol":	"TCP","num_streams":	1,"blksize":	131072,"omit":	0,"duration":	2,"bytes":	0,"blocks":	0,"reverse":	0}},"intervals":	[{"streams":	[{"socket":	4,"start":	0,"end":	1.000059,"seconds":	1.000059,"bytes":	118546160,"bits_per_second":	948313208.319058,"retransmits":	0,"snd_cwnd":	97820,"rtt":	508,"omitted":	false}],"sum":	{"start":	0,"end":	1.000059,"seconds":	1.000059,"bytes":	118546160,"bits_per_second":	948313208.319058,"retransmits":	0,"omitted":	false}}, {"streams":	[{"socket":	4,"start":	1.000059,"end":	2.000063,"seconds":	1.000004,"bytes":	117912520,"bits_per_second":	943296336.710671,"retransmits":	0,"snd_cwnd":	97820,"rtt":	499,"omitted":	false}],"sum":	{"start":	1.000059,"end":	2.000063,"seconds":	1.000004,"bytes":	117912520,"bits_per_second":	943296336.710671,"retransmits":	0,"omitted":	false}}],"end":	{"streams":	[{"sender":	{"socket":	4,"start":	0,"end":	2.000063,"seconds":	2.000063,"bytes":	236458680,"bits_per_second":	945804841.588347,"retransmits":	0,"max_snd_cwnd":	97820,"max_rtt":	508,"min_rtt":	499,"mean_rtt":	503},"receiver":	{"socket":	4,"start":	0,"end":	2.000063,"seconds":	2.000063,"bytes":	235998780,"bits_per_second":	943965299.700324}}],"sum_sent":	{"start":	0,"end":	2.000063,"seconds":	2.000063,"bytes":	236458680,"bits_per_second":	945804841.588347,"retransmits":	0},"sum_received":	{"start":	0,"end":	2.000063,"seconds":	2.000063,"bytes":	235998780,"bits_per_second":	943965299.700324},"cpu_utilization_percent":	{"host_total":	3.365885,"host_user":	0.294900,"host_system":	3.447099,"remote_total":	0.054653,"remote_user":	0.003388,"remote_system":	0.049958},"sender_tcp_congestion":	"cubic","receiver_tcp_congestion":	"cubic"}
}

5. 使用多条连接进行测试

-P参数可以指定同时连接测试的数量,缺省使用一条连接。

[jinguang1@localhost ~]$ iperf3 -c 10.23.5.66 -P 2 -t 2
Connecting to host 10.23.5.66, port 5201
[  4] local 10.23.5.65 port 13652 connected to 10.23.5.66 port 5201
[  6] local 10.23.5.65 port 13654 connected to 10.23.5.66 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  56.8 MBytes   477 Mbits/sec    0   65.6 KBytes
[  6]   0.00-1.00   sec  56.9 MBytes   478 Mbits/sec    0   67.0 KBytes
[SUM]   0.00-1.00   sec   114 MBytes   954 Mbits/sec    0
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  56.5 MBytes   474 Mbits/sec    0   65.6 KBytes
[  6]   1.00-2.00   sec  56.5 MBytes   474 Mbits/sec    0   67.0 KBytes
[SUM]   1.00-2.00   sec   113 MBytes   948 Mbits/sec    0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-2.00   sec   113 MBytes   475 Mbits/sec    0             sender
[  4]   0.00-2.00   sec   113 MBytes   474 Mbits/sec                  receiver
[  6]   0.00-2.00   sec   113 MBytes   476 Mbits/sec    0             sender
[  6]   0.00-2.00   sec   113 MBytes   474 Mbits/sec                  receiver
[SUM]   0.00-2.00   sec   227 MBytes   951 Mbits/sec    0             sender
[SUM]   0.00-2.00   sec   226 MBytes   949 Mbits/sec                  receiveriperf Done.

6. 选择使用的传输协议

iperf3缺省使用TCP作为传输协议,如果使用UDP则使用-u参数,使用SCTP 则使用--sctp参数。

7. 反向传输

缺省iperf3使用上传模式:Client负责发送数据,Server负责接收;如果需要测试下载速度,则在Client侧使用-R参数即可。

这篇关于网速测试利器-iperf3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962702

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

键盘快捷键:提高工作效率与电脑操作的利器

键盘快捷键:提高工作效率与电脑操作的利器 在数字化时代,键盘快捷键成为了提高工作效率和优化电脑操作的重要工具。无论是日常办公、图像编辑、编程开发,还是游戏娱乐,掌握键盘快捷键都能带来极大的便利。本文将详细介绍键盘快捷键的概念、重要性、以及在不同应用场景中的具体应用。 什么是键盘快捷键? 键盘快捷键,也称为热键或快捷键,是指通过按下键盘上的一组键来完成特定命令或操作的方式。这些快捷键通常涉及同

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

day45-测试平台搭建之前端vue学习-基础4

目录 一、生命周期         1.1.概念         1.2.常用的生命周期钩子         1.3.关于销毁Vue实例         1.4.原理​编辑         1.5.代码 二、非单文件组件         2.1.组件         2.2.使用组件的三大步骤         2.3.注意点         2.4.关于VueComponen