![如何处理服务器过载突发?](https://linux22.com/image/673975/%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%87%E8%BD%BD%E7%AA%81%E5%8F%91%EF%BC%9F.png)
在我的网站上,有 2 GB RAM 的 VPS 服务器,我托管了一个存储库,用户可以将一些小包(大约 2 MB)下载到他们的机器上。
问题是,随着时间的推移,这个 repo 变得非常流行 - 有数万甚至数十万的用户,现在每次我更新包时,服务器都会严重超载,直到缓存开始发挥作用。但这可能需要几个小时(上次是几天)才能再次开始降低负载。
我尝试将 RAM 增加到 4 GB,但没有明显的改善。购买更多内存实在是太贵了。
有没有什么方法可以让我轻松应对这些更新而不至于陷入困境?
编辑:我应该从一开始就提到它,我已经尝试过 CloudFlare,但是,使用 CF 使我无法控制 zip 文件的缓存时间,因此我的更新从未及时发送给我的客户。
我主要在寻找一种使连接排队而不会使服务器过载的方法(如果可能的话)......
答案1
两个相当容易实现的解决方案:
- 将 Cloudflare 放在您的服务器前面。这会将该文件的请求分发到 Cloudflare 的 CDN,并减轻您的部分服务器负载。
- 直接从 Amazon S3(或类似程序)提供文件。S3 会轻松地将用户可能生成的尽可能多的数据推送给他们。
答案2
如果请求频繁,则 2 MB 的静态内容应保留在文件系统缓存中。
使用内容分发网络扩展到许多全球节点并减轻 Web 服务器的负载。
您可以调整 httpd MPM,并可能选择不同的 MPM。worker 是一个线程选项。尝试将初始线程限制设置为比之前观察到的峰值请求率略高。