我们正在调查我们的应用程序服务器(Windows)和 Redis 实例(Linux)之间某个软件部署的性能问题。
在 10 Gbits/s 链路上,单个 TCP 连接显然只能达到 10 Mbits/s。打开多个 TCP 连接可以让我们达到更高的带宽。UDP 似乎不受这些限制的影响,可以达到链路的最大速度。这让我们怀疑网络内的某些网络设备(防火墙、代理?)导致了这些吞吐量差异。
我们iperf
在 Windows 服务器和 Linux 服务器上使用(相同版本)进行了这些测量。
然而,我们的网络团队完全否定了这些结果,理由是“iperf 在 Windows 上没有得到官方支持,因此结果不可信”。同时,他们拒绝提供替代工具来进行这些测量,并声称“网络没有问题”。
所以我的问题是:可以iperf
可靠地用于测量 Windows 和 Linux 服务器之间的 TCP 和 UDP 性能吗?如果没有,您会推荐哪种工具?
答案1
防火墙自 2005 年以来,Windows 已完美支持该功能。现在甚至有不同版本的Windows 中的 iperf3:有32位、64位甚至UWP版本可供选择。
一旦在客户端和服务器上拥有相同版本(版本指的是构建,例如 v3.1.3)的 iperf3,您就可以执行以下操作来测试 10gbps:
服务器
iperf3 -s
应显示类似如下的输出:
------------------------
Server listening on 5201
------------------------
客户
iperf3 -P XX -c $server_ip
在哪里:
- “P XX”代表并行流的数量
- "$server_ip" 上述服务器IP
这应该输出类似以下内容的内容:
[SUM] 0.00-10.00 sec 10.9 GBytes 9.30 Gbits/sec sender
[SUM] 0.00-10.00 sec 10.8 GBytes 9.28 Gbits/sec receiver
如果你没有解决这个问题,你可能想尝试改变 TCP 窗口大小。你可以在客户端使用标志来更改它-w XXu
,其中二十是大小和你单位(k,m)。
测试网络带宽的另一种方法是从一端提供 http 文件,并使用某种允许并行流的下载工具(wget、filezilla 或几乎所有的下载管理器)。或者运行基准测试工具,但我会继续使用 iperf,它通常是(几乎)所有人的默认工作工具。