点击上方关注“汪宇杰博客” ^_^
导语
以往提到测网速,大家可能想到的都是用著名的 speedtest 等工具测试互联网连接速度。但实际上仅仅测试互联网连接速度并不可靠,在部分应用场景里网速还受到服务器之间的连接速度影响,因此清楚你的网络性能瓶颈再哪个环节非常关键。而 iPerf 是一款专业的网速测试工具,可以用来测试局域网或互联网上两台机器之间的网络连接速度,让你更了解每个环节的网络性能。
测试过程
假设需要测试主机 A 到 B 的连接速度。我们需要在 A、B 两台机器上都安装 iPerf 软件(最新版叫做 iPerf3)。iPerf 软件本身不区分客户端和服务端,它通过不同参数来扮演客户端或服务端的角色。我们需要在服务器 B 上启动服务端,在服务器 A 上启动客户端,并发起对 B 的连接,以测试网络速度。
安装 iPerf3
iPerf3 可以安装到 Windows 以及大多数主流 Linux 系统中。以 Ubuntu Server 为例,通过 apt 即可安装 iPerf3:
sudo apt install iperf3
我们需要在服务器 A 和服务器 B 上都安装 iPerf3。
打开被测端口
我们要测试的是主机 A 到主机 B 的连接速度,数据包从 A 发到 B,因此需要在主机 B 上打开 iPerf3 的端口,以允许连接。
在 Azure 上打开主机 B 的管理界面,进入 "Networking",添加 TCP 5001 及 5201 端口。其中 5001 对应 iperf,5201 对应 iperf3。如果你只用iperf3,也可以只开放 5201 端口。
iPerf 3 的端口也可以通过 -p 参数指定。同样,指定端口后,也得记得在 Azure 上打开对应的端口。
准备被测主机
在被测主机 B 上运行:
iperf3 -s
-s 参数就是 server 的意思。表示该主机上的 iperf3 扮演服务端角色,在默认端口 5201 上等待连接。
准备客户端主机
在主机 A 上运行:
iperf3 -c <主机 B IP地址> -p 5201 -t 10
其中,-p 表示指定端口号,不写即采用默认端口 5201。-t 表示测试时间,我这里指定为10秒。
命令执行后即开始测试,我们可以在主机 A 的输出中看到每一次请求的数据大小以及网速。并在测试结束后看到平均网速。
此处我的主机 A 为 Azure 中国版(世纪互联)China East 2 的 VM,主机 B 为 Azure 国际版 East Asia 的 VM。
注意单位是 bits 与 bytes。bits 是位,bytes 是字节。一般宽带运营商的单位为 Mbps,要除8才能转换到 MB/s。
在测试的同时,被测主机 B 也会有同样的数据输出:
可以发现中国版 Azure 到国际版香港地区的连接速度在 13MB/s 左右。
用同样的办法也可以测试同一个数据中心里两台 VM 的网速,例如两台 Azure 国际版 East Asia 地区的 VM,网速为 1GB/s:
了解更多
iPerf 工具还有更多参数可以灵活应对各种企业场景。可以参考官方文档:
https://iperf.fr/iperf-doc.php#3doc
汪宇杰博客
Azure | .NET | 微软 MVP
无广告,不卖课,做纯粹的技术公众号
喜欢本篇内容请点个在看