我有一台刀片服务器(8 个 CPU、带宽不错、运行 Apache)。用户将连接到服务器下载单个文件(5mb 或 70mb 版本)。我该怎么做才能让服务器不因负载过重而崩溃?
用户将首先访问一个 PHP 文件,该文件将确定他们是否可以访问该文件,如果脚本通过,他们将下载该文件。我只是想知道我能做些什么来确保不是所有的插槽都填满,人们最终会超时。
我预计每天最多下载 10,000 次。一个不错的刀片服务器能处理这个吗?
答案1
首先,它是刀片服务器还是普通的“比萨盒”服务器并不重要,特别是在如此简单的用例下。
在这个特殊情况下,拥有 8 个核心是一种极大的过度行为,因为这个应用程序将受到 98%+ IO 的限制。
基本上,只有两件事可以加快速度;提高 IO 速度(比如从 1Gb NIC 移到 10Gb NIC)并确保文件始终在缓存中,除非您的 PHP 代码写得特别糟糕,否则它几乎不会在单个核心上注册。
答案2
处理单个静态文件的“最佳”方法是从 RAM 提供该文件。
我建议将“真实”副本保留在磁盘上,并在启动期间创建一个 RAM 磁盘并将文件复制到其中。每当“真实”副本更新时,也将其复制到 RAM 磁盘。