我刚刚尝试通过 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)。
我尝试过的一些事情...
这些都没有任何(积极)影响。
对我来说,解决方案是禁用 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