为大量静态内容服务提供多少 RAM?

cri*_*pox 10 vps memory nginx static-content g-wan

我想为我的静态内容制作一个服务器。
我需要提供一些 3-10 mb 的文件 - 很多。(我还将在此服务器上放置一些 .js 和 .css 以及来自我网站的图像)。
我想到了 nginx 和 G-WAN(http://trustleap.com/)。
我不知道提供静态内容需要哪些资源?每次文件传输使用多少 RAM?
如果我使用具有良好端口和巨大带宽的 256 mb(或 512 mb)VPS,我将能够提供多少点击/秒(3-10 mb 文件)?(我知道“这取决于” - 但请根据经验或理论给我一个粗略的估计)。
没有很多文件,只是经常下载 - 我应该考虑缓存,或者这只会使用我提供命中所需的内存?

rma*_*ter 10

如果您使用的是 nginx,那么您只是在谈论每个活动连接的几 KB 开销。如果您使用的是 Apache 之类的东西,那么每个连接将有一个线程,这意味着每个连接有数百 KB 甚至兆字节。

但是,nginx 不支持Linux 上的异步磁盘IO(因为 Linux 上的异​​步磁盘 IO 基本上被设计破坏了)。因此,您将不得不运行许多 nginx 工作进程,因为每次磁盘读取都可能会阻塞整个工作进程。如果您使用的是 FreeBSD,这不是问题,而且 nginx 将在异步磁盘和网络 IO 方面发挥奇迹。但是如果你在这个项目中使用 Linux,你可能想坚持使用 Apache。

但实际上,最重要的是磁盘缓存而不是您选择的 Web 服务器。您需要大量空闲 RAM,以便操作系统缓存这些文件并使读取速度非常快。如果“热设置”超过 8 GB,请考虑使用更少的 RAM 和便宜的 SSD,因为成本/收益比可能会更好。

最后,考虑使用 CDN 来卸载它,并获得一个非常便宜的服务器。他们所做的就是提供静态文件,而且他们的工作速度非常快,成本也非常低。SimpleCDN 的价格最低,但 MaxCDN、Rackspace、Amazon 等都是 CDN 空间低端的大玩家。

  • 对于未来的任何人.. nginx 确实有线程池 https://www.nginx.com/blog/thread-pools-boost-performance-9x/ (3认同)

Jor*_*ris 6

如果操作系统可以将内容的热点部分缓存到 ram 中,它就不会使用磁盘并且会非常快速地提供服务。在 VPS 上每秒应该可以处理数百个请求,您很可能会在遇到 CPU 限制之前使网络饱和。

如果内容不适合 ram,则磁盘 IO(搜索、吞吐量、文件系统碎片)将发挥作用并且方程式发生变化。

网络服务器将为每个客户端增加内存开销,但 nginx 可以在每个连接的几千字节内完成。

希望这些指点能帮到你。

  • 每个打开的连接都需要一些内存。10 个并发请求(在任何时候有 10 个 tcp 连接打开发送/接收文件)将需要 10 倍的几千字节。这与内容无关,所以 5MB 在这里不适用。 (2认同)