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

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

我面临的挑战是托管大约 200-1000 个 mp3 文件,所有文件的大小都在 100MB 以上。

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

所有这些都是静态内容,没有 PHP 或任何类型的脚本。也不会托管 HTML,无需 HTTPS,服务器上不会存储任何用户数据。

这些文件是非版权播客,由我们制作,可以在 iTunes 和任何地方免费获取,也可通过 rss 发现。

直到最近,这些文件还位于 godaddy 的廉价托管计划中,但由于流量巨大,我们别无选择,只能将这些文件托管在其他地方。

过去我只使用 Apache 来满足我的所有托管需求,但我怀疑 Apache 并不是满足这些要求的理想解决方案,而且由于服务器速度有点慢,并且没有那么多 RAM,我想知道是否有其他服务器更适合满足这些要求。

您会推荐哪个服务器?我希望有某种东西可以理解某个文件的需求量很大,例如当新剧集播出时,并将其放入 RAM 缓存中。NGINX 可以这样使用吗?我应该使用 Lighthttpd 吗?

答案1

在这种情况下,我认为 Apache/Nginx/Lighttpd 之间不会有太大差异。我认为 Apache 占用的内存会稍微多一些,前提是你删减了所有不需要的模块(很可能是大多数模块)。我个人会选择 Lighttpd,因为我更熟悉它用于提供静态文件,尽管它的负载相对较高,但我从来没有遇到过任何问题。

至于 RAM 缓存问题……操作系统应该会自动执行此操作,前提是您有足够的可用 RAM。您可以通过计时获取 N 个不同文件与获取同一文件 N 次所需的时间来测试这一点,尽管可能没有太大区别。考虑到您的文件相对较大,如果可以选择,我绝对不会吝惜您服务器的 RAM。在您的情况下,您首先可能会受到网络带宽的限制。

与许多此类问题一样,最好的答案是测试测试, 和再测试一下。在同一台服务器上(使用不同的端口)安装所有这三种设置非常容易,然后使用 ApacheBench(ab,Apache 附带)或类似工具进行一些基本的基准测试。检查服务器的负载/内存使用情况,比较可用的请求率,看看哪一个最适合您的情况。

答案2

这个问题充满了过早优化的味道。

我希望有某种东西可以理解某个文件的需求量很大,例如当新剧集上映时,它会将其放入 RAM 缓存中。NGINX 可以这样使用吗?

您甚至无需担心 - 它会被操作系统缓存,并在第一次请求时放入 RAM。它会留在 RAM 中,因为每个人都会请求它。

设置一些简单易用的东西(apache/nginx)然后让它运行。

如果您需要帮助提供数据(尤其是考虑到服务器没有太多 RAM 用于缓存),请将 CDN(即 Cloudflare)放在前面。实际上,由于 Cloudflare 有一个免费套餐,把它放在前面!

答案3

您大致有以下选择:

  1. 继续您之前所做的事情,但通过升级到更大的托管计划来增加您自己的广播容量。
  2. 获得具有专用、无限 100/1000/10000 Mbit 上行链路的服务器,让您可以从通用托管解决方案转变为更适合您用例的解决方案。
  3. 将您的广播需求转移到内容分发网络 (CDN)。这意味着您可以继续使用当前的托管计划,因为大多数流量将由 CDN 提供,而且您的工作流程也不会发生任何变化。

第一种通常不是很具成本效益,许多通用托管计划仅适用于许多小型、流量相对较低的网站,而大型网站不适合该商业模式,因此一旦您达到一定限制,定价通常会将您赶走。

第二种不一定是最便宜的,但如果您有时间获得所需的技能并测试您提议的(软件)配置,它将为您提供很大的灵活性。通常,最快的数据来自内存,然后是 SSD、SAS 和 SATA 磁盘,但它们也是最便宜的存储。将最流行/当前文件缓存在内存中的程序应该是最快的(例如 Varnish),尽管 Linux 通常使用任何未使用的内存作为磁盘缓存,并且任何轻量级 Web 服务器都应该足以满足静态内容的需求。

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

相关内容