刀片服务器如何最好地处理大量用户下载静态二进制文件?

我有一个单刀片服务器(8个CPU,体面的带宽,运行Apache)。 用户将连接到服务器下载单个文件(5MB或70MB版本)。 我能做些什么来使服务器不会在负载下融化?

用户将首先访问一个PHP文件,这个文件将决定他们是否可以访问文件,如果脚本通过,他们将下载文件。 我只是想知道我能做些什么来确保不是所有的插槽都满了,人们最终会超时。

我预计每天最多可下载10,000次。 一个体面的刀片服务器能够处理这个吗?

首先,无论是刀片式服务器还是普通的“比萨饼盒”服务器都是无关紧要的,尤其是对于这样一个简单的用例。

在这个特殊的情况下,有8个核心是巨大的矫枉过正,因为这个应用程序将98%+ IO绑定。

基本上只有两件事可以做得更快。 提高你的IO速度(比如说从1Gb网卡迁移到10Gb网卡),并确保文件总是在caching中,除非你的PHP代码特别糟糕,它只能在一个以上的内核上注册。

“最好”处理单个静态文件的方法是从RAM提供该文件。

我build议保持磁盘上的“真实”副本,并在启动过程中创build一个RAM磁盘,并将文件复制到它。 任何时候更新“真实”副本,都将其复制到RAM磁盘。