我正在尝试通过局域网传输大文件(每个 3+ 演出)。我的连接是 100 兆比特,带有千兆主干。但是,在服务器之间以及从服务器到我的本地计算机传输文件时,传输速度徘徊在每秒 11 到 13 兆比特左右。
但是,来自 Internet 的大量下载速度要快得多。
我已经向我的网络基础设施人员提出了这个问题,但他们坚持认为网络配置一切正常。
我可以在我的计算机或服务器上安装任何工具来尝试隔离减速的根源吗?
我正在尝试通过局域网传输大文件(每个 3+ 演出)。我的连接是 100 兆比特,带有千兆主干。但是,在服务器之间以及从服务器到我的本地计算机传输文件时,传输速度徘徊在每秒 11 到 13 兆比特左右。
但是,来自 Internet 的大量下载速度要快得多。
我已经向我的网络基础设施人员提出了这个问题,但他们坚持认为网络配置一切正常。
我可以在我的计算机或服务器上安装任何工具来尝试隔离减速的根源吗?
首先检查每个服务器上的接口计数器,应该有 0 或接近 0 的错误报告。
其次,检查两台服务器的双工。如果您混合使用 100mbit 和 GbE,那么您可能会遇到双工不匹配。确保双方都设置为自动/自动,或手动设置所有接口上的速度和双工。
第三,在 GbE 主干上存在什么样的争用,您能否确认您的传输存在足够的空间?
最后,您的发送服务器是否能够足够快地传输。正如下面的评论所暗示的,您是否受到发送方驱动器的 IO 带宽或 CPU(如果您使用的是 scp 或类似设备)的限制?
顺便说一句,每秒11 到 13 兆字节是 100mbit 的理论最大值,你确定你用来测量的工具报告了正确的单位吗?
查看我使用的以下过程,这可能有助于缩小问题所在。
当我测试网络吞吐量时,最好去除尽可能多的变量,例如磁盘 i/o 或 CPU 限制。这是我使用的过程,它可以说明您将在网络中看到的典型最大值。
工具:
这两个实用程序都应该在大多数现代 *nix 系统上可用,可以通过软件包预安装,也可以从源代码编译。
程序:
在一台计算机上运行以下命令以设置 UDP 侦听器。(使用 UDP 将提供更高的性能数字,因为没有 TCP 传输开销。)
nc -ulp 5000 > /dev/null
在另一台机器上,运行以下命令,替换侦听器的 ip 地址,以通过网络向 nc 侦听器发送零流。pv 实用程序将显示接收器跟踪的当前性能。
pv < /dev/zero | nc -u listener-ip-address 5000
笔记:
这种方法在设计良好且设备功能正常的网络中给出了可预测的结果。出于这个原因,它是帮助发现网络本身或网络设备是否导致感知“缓慢”的好工具。
您使用的是 Windows Vista 吗?请注意,只要您打开多媒体应用程序(包括带有 Flash 的网络浏览器),Vista 就会限制 LAN 传输。
我遇到了这个问题,当它们本应以 30-40MB/s 的速度传输时,传输速度被限制在 10MB/s。
您可以在此处详述的注册表项中禁用节流:
http://www.anandtech.com/systems/showdoc.aspx?i=3233&p=2
还要考虑两种方案之间的协议差异。“来自 Internet 的大量下载”听起来像是基于 TCP/IP 的 HTTP 或 FTP。在 LAN 上,您使用的是不同的东西吗?也许是一组不匹配的 SMB 实现,或者 Apple 文件共享?我之所以提到它,是因为我已经看到 Windows 和 UNIX/Linux 系统之间的 SMB 流量以一些非常脑残的方式表现。
尝试尝试不同的传输机制,看看是否会产生不同的结果。
当您在“服务器之间”传输文件时,服务器是否直接通话?
或者,您是否在 Windows 中,并且您是否将驱动器映射到每个服务器,并且您正在跨这些服务器拖动文件?
在第二种情况下,一切都通过您的计算机进行,因此您将获得的最快传输速度约为 11MBps。
如果您在 *nix 系统上,请使用 ttcp 确定您的 TCP 连接是否是瓶颈。
如果您使用的是 Windows,我强烈建议您使用免费实用程序RichCopy。它是多线程的,可以暂停和恢复文件复制操作。我很幸运使用它在服务器之间传输文件。
这是一个非常古老的工具,但我过去在Netperf上取得了很好的成功。它应该让您初步了解两个设备之间的带宽。
愚蠢的建议,但是否有可能传输不是通过 LAN 进行的,但实际上是通过 Internet 进行的?你是如何在机器之间连接的?我问是因为您的症状听起来与最近一集中的 DotNetRocks 中讨论的症状相似。请参阅解决方案的成绩单,开始阅读: