我有一台名为 Babylon 的服务器。它运行的是 Windows Server 2003 SP2,位于中西部。
我可以通过主机名和 IP 从同一栋楼里的远程机器 ping Babylon。延迟小于 20 毫秒。
我可以通过主机名和 IP 从其他州的机器 ping Babylon。延迟约为 200 毫秒。
我可以从大楼内和其他州的机器远程访问 Babylon,它运行良好。低延迟、响应迅速、速度快。
一旦我远程进入 Babylon,我就可以快速地在本地复制文件。
尝试通过 UNC (\babylon\projects) 连接共享并浏览文件系统非常慢。延迟时间长达数十秒。
尝试从其中一个共享中复制文件的速度非常慢。延迟时间长达数十秒。
共享位于 RAID 阵列上。RAID 有两个 2GB 光纤通道。我已尝试过在机器上的其他共享上进行此操作。网络利用率从未达到约 0.5% 的峰值。CPU 使用率从未超过约 1%。
我应该了解什么才能理解为什么远程桌面、ping 和本地复制很快,而跨文件共享的复制却很慢?
答案1
可能导致这种情况的原因是 SMB 协议的设计。
SMB 需要大量确认,有时需要在每个操作之间进行确认。这种大量确认的要求意味着延迟会降低性能。它基于块,而不是基于流。
看:
答案2
打开本地连接属性窗口,Babylon服务器上的Speed值是多少?
您能否进入设备管理器,找到您的网络适配器,转到属性并确保网络适配器的“链接速度和双工”设置为“自动”(或者更好的是,如果您知道您的最大速度(例如 1Gbps)则将其设置为 1Gbps/全双工)?
您是否尝试过更换交换机上的另一个端口?
需要明确的是:您尝试执行的文件复制操作是在同一个 LAN 上的两台机器(Babylon 和另一台)之间进行的,还是在 Babylon 和通过 Internet 的远程机器之间进行的?
答案3
Zoredache 的回答是正确的;这也意味着网络链路不需要饱和。对于某些操作(似乎是缓冲不良的 I/O),与普通复制操作相比,有效传输大小甚至可以减少十倍。
想象一下,一个披萨送货员必须开车 15 分钟(延迟)到达他的客户那里。他有一个可以装 10 个披萨的盒子(带宽)。但他的协议(SMB)只允许一次为客户送一个披萨。因此,如果客户订购 5 个披萨,则需要 75 分钟才能把它们全部送来。