事情是这样的...我从 Windows XP 客户端到 Windows 2008R2 服务器的文件复制速度非常慢。以下是事实:Windows XP 到 Windows 2K3:快 Windows XP 到 Windows 2K8:非常慢 Windows 7 到 Windows(任何):快
尽管显而易见的解决方案是升级到 Windows 7,但是我们有 900 台台式机,因此这不是短时间内的选择。
我已经尝试了所有方法:禁用 SMB2.0、禁用安全签名、更改 TCP 窗口大小、禁用 W2K8 自动调整、升级驱动程序等。
我们消除了网络;服务器和客户端都连接到同一个核心交换机(无跳跃、无路由器、相同的 VLAN)。
使用数据包捕获实用程序监控网络后,我们发现 W2K8 和 XP 计算机之间交换的 SMB 数据包非常小(256 字节);尽管 MTU 设置正确(1500),并且没有任何碎片。事实上,这些 SMB 数据包在 IP 数据报上显示窗口为 65535 或接近。
使用相同应用程序制作的相同跟踪,但不是使用 W2K8 共享,而是使用 Windows XP 共享(速度很快),显示 4096 字节的 SMB 数据包。如有必要,我可以发布跟踪。
那么,为什么 XP->W2K8 协商安排了 24 字节的 SMB 负载,而 XP->XP 协商安排了 4096 个 SMB 数据包呢?
有什么想法吗?我缺少这些……
答案1
解决了!
机会锁被禁用。这导致预读缓存无法工作,并且交换的 SMB 数据包非常小。
启用机会锁后,我们会看到 4096 字节(4K)的 SMB 数据包,这是 NTFS 块的大小。
现在一切都好。