构build一个托pipe混合的小型和大型(100MB +)静态内容的Web服务器

我有挑战的主机大约200-1000的MP3文件,都在100MB +的大小范围内。

此外,还有一些较小的RSS文件,以及一些较小的JPG文件。

所有这些都是静态内容,没有PHP或任何types的脚本。 也不会有HTML托pipe,没有什么必须是HTTPS,没有用户数据存储在服务器上。

这些文件是非版权的播客,这是由我们自由生产,随时随地都可以通过RSS发现到任何地方。

直到最近,这些文件位于godaddy的一个便宜的托pipe计划,但由于巨大的stream量,我们别无select,只能在其他地方托pipe这些文件。

在过去我只使用Apache来满足我所有的托pipe需求,但是我怀疑apache对于这些要求并不是理想的解决scheme,而且由于服务器有点慢,而且没有那么多的RAM,我想知道如果不同的服务器会更好的这些要求。

你会推荐哪个服务器? 我希望能有一些东西能够理解一个文件的需求量很大,例如,当一个新的情节出现,并将其放入RAMcaching中。 NGINX能以那种方式使用吗? 我应该使用Lighthttpd吗?

在这种情况下,我不希望Apache / Nginx / Lighttpd之间有太大的区别。 如果你修剪掉所有你不需要的模块(这很可能是大部分模块),我希望Apache能稍微增加一些内存。 我个人的select是Lighttpd,因为我更熟悉静态文件,尽pipe负载相对较高,但从来没有任何问题。

至于RAMcaching问题…操作系统应该自动假设你有足够的RAM可用。 您可以通过计算获得N个不同文件所花费的时间与获取相同文件N次所需的时间进行testing,尽pipe可能没有太大差别。 看到你的文件是相对较大的,我绝对不会吝啬你的服务器的内存,如果你有一个select。 在你的情况下,你可能会受到networking带宽的限制。

正如许多这类问题一样,最好的答案是testingtestingtesting 。 在同一台服务器上(不同端口下)完成这三个设置是很容易的,然后使用ApacheBench(ab,Apache自带的)或类似的工具做一些基本的基准testing。 检查您的服务器的负载/内存使用情况,比较可用的请求率,并查看哪一个最适合您的情况。

这个问题反映了不成熟的优化。

我希望能有一些东西能够理解一个文件的需求量很大,例如,当一个新的情节出现,并将其放入RAMcaching中。 NGINX能以那种方式使用吗?

这是你甚至不需要担心的事情 – 它将被操作系统caching,并在第一次被请求时被放入RAM中。 它会留在RAM,因为大家都会问。

设置一些简单和容易的(apache / nginx),让我们呃撕裂。

如果您需要帮助提供数据(尤其是服务器没有足够的内存用于caching),请将CDN(即Cloudflare)放在前面。 实际上,由于Cloudflare有一个免费的层级 ,所以把它放在前面!

大致你有的select是:

  1. 继续您以前的工作,但通过升级到更大的托pipe计划来增加自己的广播容量。
  2. 通过专用的无限制100/1000/10000 Mbit上行链路获取服务器,使您可以从通用托pipe解决scheme转向更符合您的使用情况的应用。
  3. 将您的广播需求卸载到内容交付networking(CDN)。 这意味着您可以继续使用当前的托pipe计划,因为大部分stream量都将由CDN提供服务,而且您的工作stream程也没有任何变化。

第一个通常不是很经济,许多通用托pipe计划只适用于许多小型,相对较低stream量的站点,而大型站点不适用于该业务模式,所以通常定价被devise为在您达到一定限制时驱动您离开。

第二个不一定是最便宜的,但是如果你有时间投入时间来获得所需的技能并testing你提出的(软件)configuration,那么这个灵活性允许你很大的灵活性。 通常最快的数据来自内存,然后SSD,SAS和SATA磁盘落后,但也是最便宜的存储。 caching内存中最受欢迎/当前文件的东西应该是最快的(例如Varnish),尽pipeLinux通常使用任何未使用的内存作为磁盘caching,而任何轻量级的Web服务器都应该足够用于静态内容。

即使你不使用像cloudflare这样的免费CDN,CDN可能会比选项1和2便宜得多。