通过 Netbios 复制文件时 Windows Server 2003 的性能很差

yjg*_*hmj 1 windows performance netbios

我们有一个基于 Windows Server 2003 的服务器,它通过千兆接口共享一个文件夹,每小时从另一台服务器接收一个 10GB 的文件。该服务器是 Dell PowerEdge 830,在 RAID-1 上有两个 SCSI 磁盘,带有一个 PERC4/SC 适配器。传输发生在将近 10 分钟,并且服务器在传输期间变得无法使用。我们甚至无法打开 Windows 资源管理器、任务管理器或通过 VNC 访问服务器。我们需要一些关于问题是什么的建议,或者如何进一步跟踪以找到问题。

Hel*_*ick 5

这是几乎可以肯定是由于服务器膨胀,因为入站传递超过磁盘子系统的写入速率上的写缓存-看到马克Russinovitch对在不同的Windows版本网络复制行为的文章在这里

引擎实现的最大问题之一是,对于涉及大量数据的副本,目标系统上的缓存管理器后写线程通常无法跟上数据写入和缓存在内存中的速度。这会导致数据填满内存,可能会迫使其他有用的代码和数据输出,最终,目标系统的内存成为一个隧道,所有复制的数据以磁盘限制的速率通过该隧道流动。

他在这里谈论的引擎是来自 Windows XP(和 W2K3)的引擎。

一旦缓冲超过系统上可用物理 RAM 的总量,除了与副本关联的写入之外,您还将看到物理分页,并且所有标准的 Windows IO 活动仍在尝试继续。一旦您尝试启动触发进一步分页的新进程 - 再次减慢一切。

您的磁盘可能有问题,但即使在理想条件下,此服务器上的 RAID 1 配置也不太可能维持比大约 40-50Meg/秒快得多的 10Gig 写入流,而您的 GigE 链接几乎肯定会超过(并且可能很容易加倍,如果不是稍微多一点)。

您的选择是:

  1. 添加更多磁盘以使阵列更快 - 您至少需要使用 4 磁盘 RAID 10 或 6/7 磁盘 RAID 5 以使流写入 IO 足够高以避免缓冲。
  2. 增加足够的 RAM 以缓冲整个流,或者如果您的 Windows Server 版本和您的硬件允许,则至少是其中的一大块。
  3. 找到某种方法将传输速率控制在 10-20Meg/sec 左右。
  4. 升级到 W2K8(具有更智能的网络复制缓冲区)。