服务器

服务器

我们正在调查我们的应用程序服务器(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,它通常是(几乎)所有人的默认工作工具。

答案2

可以使用 iperf,我想知道当报告 10 Mbps 时您使用了哪些参数。

另一个有用的工具是 Netpipe(可在 Linux 存储库中找到),对于 Windows,我建议使用 Java 版本,这里

有关如何运行 Netpipe 的信息是这里可用的。

我们可以帮助您识别与 Redis 访问相关的问题。您使用哪家网络供应商?

相关内容