我正在尝试通过局域网传输大型文件(每个文件 3+ GB)。我的连接速度是 100 兆比特,主干网是千兆比特。但是,在服务器之间以及从服务器到本地计算机传输文件时,传输速度徘徊在每秒 11 到 13 兆比特左右。
然而,从互联网下载大量文件的速度要快得多。
我已经向网络基础设施人员提出了这个问题,但他们坚持认为网络配置一切正常。
有没有什么工具可以安装在我的计算机或服务器上,以尝试隔离导致速度变慢的根源?
答案1
首先检查每个服务器上的接口计数器,应该报告0个或接近0个错误。
其次,检查两台服务器的双工。如果您混合使用 100mbit 和 GbE,则可能存在双工不匹配的情况。确保两侧均设置为自动/自动,或者手动设置所有接口的速度和双工。
第三,GbE 主干网上存在什么样的争用,您能否确认有足够的空间供您进行传输?
最后,您的发送服务器是否能够以足够快的速度传输数据。正如下面的评论所暗示的那样,您是否受到发送方驱动器的 IO 带宽或 CPU 的限制(如果您使用 scp 或类似程序)?
顺便说一下,11到13兆字节每秒是 100mbit 的理论最大值,您确定您用来测量的工具报告的单位正确吗?
答案2
查看我使用的以下步骤,这可能有助于缩小问题的范围。
当我测试网络吞吐量时,最好尽可能多地排除变量,例如磁盘 i/o 或 CPU 限制。这是我使用的程序,它可以说明您在网络中看到的典型最大值。
工具:
这两个实用程序都应该在大多数现代 *nix 系统上可用,要么通过软件包预先安装,要么能够从源代码编译。
程序:
在一台计算机上运行以下命令来设置 UDP 侦听器。(使用 UDP 将提供更高的性能数字,因为传输时没有 TCP 开销。)
nc -ulp 5000 > /dev/null
在另一台机器上,运行以下命令,替换侦听器的 IP 地址,通过网络向 nc 侦听器发送零流。pv 实用程序将显示接收器跟踪的当前性能。
pv < /dev/zero | nc -u listener-ip-address 5000
笔记:
- 千兆以太网连接的理论最大值为 119MB/s(注意,M乙,不是 Mb)
- 还可以通过删除两个 nc 命令中的 -u 来测试 TCP
- 在实际应用中,您永远无法达到 pv 输出中所示的性能数字。
这种方法在设计良好且设备正常运行的网络中可以产生可预测的结果。因此,它是一种很好的工具,有助于发现是网络本身还是网络设备导致了感知到的“缓慢”。
答案3
你使用的是 Windows Vista 吗?请注意,只要你打开多媒体应用程序(包括带 Flash 的 Web 浏览器),Vista 就会限制 LAN 传输。
我遇到了这个问题,传输速度被限制在 10MB/s,而它应该以 30-40MB/s 的速度传输。
您可以在此处详细说明的注册表项中禁用限制:
答案4
当您在“服务器之间”传输文件时,服务器之间是否直接通信?
或者,您在使用 Windows 并且是否将驱动器映射到每个服务器并且在这些服务器之间拖动文件?
在第二种情况下,一切都通过您的计算机进行,因此您将获得的最快传输速度约为 11MBps。
如果您使用的是 *nix 系统,请使用 ttcp 来确定您的 TCP 连接是否是瓶颈。