Windows Server 2003 - 处理数百个同时下载

Windows Server 2003 - 处理数百个同时下载

目前我有一台配备 4 个 1TB 硬盘的服务器,每天我上传超过 150 个 MP3 音乐文件(每个约 80mb)。

在繁忙时段,有超过 300 人同时流式传输/下载这些混音,75% 的活动是最近上传的内容,这些内容都在一个硬盘上。

由于在单个硬盘上同时发生 200 多次读取活动(使用 HDTach 运行了一些测试),因此我的硬盘读取速度非常低。

解决这个问题的合理解决方案是什么?我有几个想法:

  • 与另一台服务器进行负载平衡
  • 安装更快的硬盘(目前最好的是SCSI / SATA)
  • 将访问最多的文件分散到 4 个驱动器上,这样它就可以在所有 4 个磁盘之间共享负载,而不是将所有访问最多的(最近的)文件都放在最近安装的驱动器上。

显然,负载平衡是最昂贵的选择,但它能带来很大的帮助吗?

对这种情况的一些帮助将会很棒!

答案1

您可以根据预算和硬件可用性,从几个不同的方向进行扩展。请考虑以下步骤,可能按此顺序进行,但无论如何都适合您的情况:

  • 将磁盘重新调整为条带 RAID 集以提高原始磁盘性能。这意味着从磁盘备份文件,创建阵列,然后将数据移回条带。如果您为了获得更高的容错能力而可以承受一些容量损失,请选择条带和镜像阵列,这样可以承受磁盘故障

  • 为服务器的页面/临时文件存储添加专用 RAID 磁盘组。使其成为快速的 RAID0 设置,重点关注性能。确保您的应用程序在提供文件时将文件放入内存中,并且页面文件足够大以容纳文件。这是一个相当便宜、直接的改进。

  • 为服务器添加更多 RAM(如今 RAM 相对便宜),重点是 RAM 总量,而不是纯粹的性能。服务器可能可以处理几种不同的 RAM 速度 - 速度较慢的 RAM 每 GB 可能更便宜 - 您实际上并不需要超高的 RAM 性能,而是需要大量 RAM。

  • 重新分层应用程序,以便文件由专用主机提供,其余的 Web/数据库流量和处理由单独的机器处理。这样将留下一台服务器专门用于文件服务,您将从中获得性能优势。

  • 对存储进行分层,并添加快速磁盘条带以提供最新的 MP3。一旦需求下降,就将文件移至较慢的存储。这种方法的可行性取决于定期移动文件所涉及的工作量,以及您可以在应用程序中自动执行多少工作。

  • 添加一组 SSD 驱动器来提供最新文件。

最终,你可以采用分层存储解决方案,按照从快到慢的顺序堆叠:- RAM - 页面文件 - SSD - 快速 SATA/SAS 条带 - 大容量磁盘阵列

答案2

最好的办法是进行某种 RAID 设置,以便将负载分散到多个硬盘上。此外,这样一来,即使 RAID 阵列中某个磁盘发生故障,您也能安然无恙,不会丢失任何数据。

根据您的说法,4 磁盘 RAID 5 阵列应该可以很好地工作,因为大多数数据都是读取的。

答案3

因此,您需要一个负载平衡器,以确保两台机器都可以在需要时处理请求,并使用 RAID 来提高可靠性并平衡磁盘上的文件读写。哦,还有一个 rsync 类型的工具来确保文件同步。

至于这其中的各个部分是否“值得”,与其猜测,不如进行性能监控,看看瓶颈在哪里。如果磁盘存储确实是问题所在,那么 RAID 就值得。如果服务网络请求是问题所在,那么服务器负载平衡就是您的好帮手。

答案4

您的服务器有多少内存?如果系统专门用于提供文件服务,那么使用 ramdisk 可能是一个选择。否则,请监视 perfmon 中的文件缓存计数器(例如缓存 - 缓存读取命中率%)和磁盘计数器(特别是平均磁盘队列长度,这通常应在 3 左右或更小)。

这是一个文档其中的一些优化可能会有所帮助。

相关内容