服务器 2008 至 2003 使用 cifs 进行文件传输速度缓慢

服务器 2008 至 2003 使用 cifs 进行文件传输速度缓慢

我刚刚尝试通过 cifs(Windows 文件共享)在服务器 2003 R2 和新服务器 2008 SP1 之间复制文件,但速度却非常慢。

传输文件大小为 300MB,大约需要 30 分钟。我的传输速度约为 1-2Mbit/s,这是在本地交换机上。

我尝试从两台服务器启动传输,结果相同。

从 2003 复制到另一个 2003 只需不到 1 分钟,因此显然与 2008 服务器有关。

更奇怪的行为是,如果我同时将另一个文件从 2003 服务器复制到另一个 2003 服务器,则从 2008 服务器的传输速率会急剧增加(比如增加 10 倍,但仍然很慢)。

通过 RDP-drivesharing,我获得了完整的 VPN 速度,大约 20Mbit。其他服务似乎都没有出现任何延迟。

我看过关于 tcp 卸载在 win2008 中造成麻烦的帖子,这有关系吗?

答案1

确保 2008 服务器本身正常工作。尝试在它和另一台 2008 服务器之间传输文件,或者如果没有可用的 Vista 工作站,它们使用相同的 cifs 版本。

当 NIC 和交换机之间的速度/双工不匹配时,我看到过类似的文件传输行为,有时是因为自动感知问题,有时是因为其中一个或另一个配置错误,或者两者兼而有之。

答案2

您可以尝试关闭 TCP 自动调整:

netsh interface tcp set global autotuninglevel=disabled

如果这不起作用,请使用以下命令重新打开它:

netsh interface tcp set global autotuninglevel=normal

TCP 自动调整是 Vista 和 Windows 2008 TCP/IP 堆栈中的一项新功能。通过 TCP/IP 发送的数据量取决于(除其他因素外)接收窗口的大小。在以前的 Windows 版本中,接收窗口大小上限为 64KB。使用自动调整后,窗口大小会根据连接的容量和速度动态更改。这样做的目的是加快数据传输速度。

问题是,如果客户端操作系统或网络硬件不能正确支持此功能,则此功能实际上可能会导致传输速率降低(如 RFC 1323《高性能 TCP 扩展》中所述)。

无论如何,这可能不是这里的问题,但值得一试。

答案3

我刚刚解决了网络上类似的问题。一台 Windows 2003 Server 计算机糟糕的(~20Kb/s)从新的 Windows 2008 R2 机器上的共享读取速度(但奇怪的是,2003 >> 2008 很好,~50+Mb/s)。

我尝试过的一些事情...

  • autotuninglevel=disabled按照上面的建议进行设置
  • 禁用 SMB 2,如上所述这里
  • 调整适配器双工和流量控制设置,主要基于这个帖子但在许多地方都有提及

这些都没有任何(积极)影响。

对我来说,解决方案是禁用 TCP 卸载(描述这里)通过添加以下注册表项...

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value = DisableTaskOffload
Type = DWORD
Data = 1

Value = EnableTCPChimney
Type = DWORD
Data = 0

Value = EnableTCPA
Type = DWORD
Data = 0

Value = EnableRSS
Type = DWORD
Data = 0

重新启动后,所有传输都恢复正常。

根据我对该问题的(有限)理解,该问题仅发生在运行 2008 或 Win 7 的机器中的某些 NIC 型号(我的是 Intel 82578DC)上,该机器正在与运行 2003 或 XP 的机器通信。在我的例子中,2003 机器是运行在 VMware Server 2.0.2 上的虚拟机(但我不知道这是否相关)。

希望对大家有帮助!

答案4

我首先猜测是硬件问题。尝试使用 FTP 或 HTTP 传输文件,看看是否也很慢。

JR

相关内容