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

目前,我有一个单一的服务器与4个1TB硬盘,每天我超过150 MP3file upload(每个约80MB)。

在繁忙时段,有超过300人同时stream式传输/下载这些混音,其中75%是最近上传的东西,全部都放在一个硬盘上。

由于在单个硬盘上同时发生的200多次读取的高活性(使用HDTach进行了一些testing),我在硬盘上的读取数据量非常低。

什么是解决这个问题的逻辑解决scheme,我有两个想法是:

  • 与另一台服务器负载平衡
  • 安装更快的硬盘(现在最好的是什么?SCSI / SATA)
  • 将最多访问的文件分散到4个驱动器上,以便在所有4个磁盘之间共享负载,而不是最近安装的驱动器上所有访问最多的(最新的)磁盘。

很明显负载平衡是最昂贵的select,但它会大大帮助吗?

在这种情况下一些帮助将是伟大的!

根据您的预算和硬件可用性,您可以在这里调整一些不同的方向。 考虑这些步骤,可能是这个顺序,但是适合你的情况:

  • 将磁盘重新组合为条带RAID组,以提高原始磁盘性能。 这将意味着从磁盘备份文件,创build数组,然后将数据移回到条带。 如果为了提供更高的容错性,您可以承受失去一些容量的能力,那么请select一个条带镜像arrays,这样可以在磁盘故障

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

  • 增加更多的内存到服务器(现在是相对便宜的东西),重点放在总体RAM,而不是纯粹的性能。 服务器可能可以处理几种不同的RAM速度 – 而更慢的东西可能每GB更便宜 – 你并不需要超高的RAM性能,而是你需要批量。

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

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

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

最终,您可以针对堆叠起来的分层存储解决scheme,以最快的速度最慢: – 内存 – 页面文件 – 固态硬盘 – 快速SATA / SAS条带 – 批量磁盘arrays

你最好的select是获得某种RAID设置,以便将负载分散到多个硬盘上。 此外,这将使您能够在RAIDarrays中的磁盘发生故障而不丢失任何数据的情况下继续工作。

基于你所说的4磁盘RAID 5arrays应该适合你,因为大部分数据是读取。

所以你想要的是一个负载平衡器,以确保两台机器可以提供请求(如果需要的话)以及RAID来提高可靠性并平衡磁盘上的文件读/写。 哦,一个rsynctypes的工具,以确保文件是同步的。

至于这是否“值得”,而不是猜测你需要做性能监测,看看瓶颈在哪里。 如果磁盘存储是绝对的问题,那么RAID是值得的。 如果服务networking请求是问题,那么服务器负载平衡是你的朋友。

你在服务器上有多less内存? 如果系统专门用于提供文件,也许使用ramdisk是一个选项。 否则,监视perfmon中的文件高速caching计数器,如Cache – Cache Read Hit%和磁盘计数器(特别是平均磁盘队列长度,一般应该在3或更less。

这里有一个文件 ,有几个优化,可能会有所帮助。