分离高stream量网站上的dynamic和静态内容

我正在尝试增加我的网站的容量,这个容量已经超出了我现在的networking服务器能够处理的范围。 该网站托pipe在一个专用的Web服务器(Litespeed)和一个专用的数据库服务器上。 它每天接收超过18万人次的访问量,每天从网站上下载100,000次。

该站点基于PHP / MySQL,承载了超过200GB的用户生成的上传/文件共享。 对于每个上传,我们将主/下载文件与预览一起存储。 这可以是一个简短的MP3文件,一个简短的MP4video(转换为FLV预览)和图像(JPG)之间的几个其他格式,通常有一个缩略图和更大的图像预览。 我们也有一个20GB的附件论坛。

所有dynamic,下载/静态内容托pipe在Web服务器上,全天负载为20,瓶颈是磁盘等待和CPU(双5410)。

我的主机build议镜像Web服务器前面的一个硬件负载平衡器,这意味着保持更大,更慢的磁盘 – 或者,运行一个Web服务器的dynamic网页与更快的磁盘和移动所有静态内容,缩略图/预览和下载运行nginx的专用静态服务器。 这对服务图像预览效果不错,但是所有下载都是通过Web服务器上的PHP脚本dynamic提供的,Mp3和flv预览stream也是如此。 我看不出如何从下载/stream媒体内容中获得任何好处,因为我认为Web服务器仍然承受着沉重的负担,只有JS,CSS和预览图像将直接从静态服务器提供。 他们还build议build立一个私有云; 在每个服务器上都有一个虚拟Web服务器和负载平衡器。

有人可以解释一下在这种情况下如何最好地进行优化,如果需要的话可以在未来扩大规模。

其他信息:我们的MP3文件不是大文件(350-400KB),FLV文件高达10MB,但其他一些内容,如rar / zip文件可以达到30MB,平均约10MB。

谢谢

很抱歉地说,但是如果PHP / MySql存在,并且优化,我会抓取分析器。 无论我如何削减数字,这个网站是应该能够快乐地运行在一个Atom处理器上的核心。 每天有180.000名游客对于一个精心devise的网站来说并不算什么。 对于光盘等待 – 获取适当的RAID控制器或ZFS,并将1-2 SSD作为caching。 加上得到硬iscs – 快很多。 数据库不是在正常的terminal服务器上放置的。 只是给你一个想法 – 我有一个800GB的数据库服务器,我使用了10个光盘 – 8x Velociraptor离子RAID 10,2 SSD在镜像日志。 对于任何数据库而言,光盘等待将会发生在devise糟糕的子系统上。

所以,再一次,如果我是你,我会:

  • 开始优化我的PHP代码,放入一些加速器。 我记得一年前在一个约会网站上与一个双重奔腾的400.000名游客打交道。 在一个电视节目一个小时。 用ASP – 没有编译。

  • 开始铺设一个更好的IO子系统。

注:后者可能需要新的硬件。 无论如何。 SuperMicro在这里规定 – 他们有4个机架单位高度的多达72个驱动器托架的服务器机箱。 2个机架单元中的24个光盘,全部放在SAS背板上。 我使用其中的一个(现在总共20个碟片),它真的很有趣。

您可以使用X-SENDFILE标头通过脚本优化提供的静态内容。

你可能应该将你的静态内容和数据库拆分成不同的磁盘/arrays,然后用静态内容数组设置来试验一下。 在某些情况下,raid1 / raid10可能会更好,在其他情况下raid5可能会更好地工作(特别是如果你不写太多),在某些情况下,只有几个单独的驱动器(或raid1arrays,如果你需要冗余)均匀地跨所有他们可能会做的伎俩。

取决于你有多less内存,拥有所有的小文件,或在ramdisk中最常用的一些文件(你可以从web服务器日志中获得统计数据),从而在磁盘上变得容易起来。 (虽然这真的取决于你所看到的确切的stream量,因为操作系统正在试图为你做这个caching,这可能会,也可能不会很好)

当然也可以把服务器分成两个,每个服务一半的文件可以帮助你甚至没有loadbalancer。 (这又取决于stream量)

在投资硬件或改变您的架构之前,我build议您尝试找出性能问题的根本原因。

你已经提到了磁盘IO。 什么导致这个IO? 你确定它是文件下载,也许logging或其他活动。

我通常从编写磁盘写入/读取的目录开始。 是否有任何特定的程序/function比其他程序导致更多的问题。 尝试禁用某些任务,例如发送Apache日志到/ dev / null。 停止邮件,如果它也在服务器上运行。

这只是我要开始的一个例子。

许多主机很快推出更多的硬件 – 这里肯定有商业动机,但通常这是他们处理性能问题的唯一办法。 他们通常不提供networking性能优化服务,所以默认的答案变成了更多的硬件。

更多的硬件是昂贵的,收益递减。