如何配置 nginx 来提供“服务器超载”或容量不足的页面?

如何配置 nginx 来提供“服务器超载”或容量不足的页面?

我有一个客户,他期待今晚在国家电视台上做广告,他们刚刚告诉我(很喜欢这个方法,是吧?)。我正试图利用我所剩无几的时间做一些容量规划,我认为我应该尝试的一件事就是某种形式的“容量不足”页面。

这个想法是(a)定义一个阈值,表示“这就是超载的意思”,(b)在每个请求上将当前负载与[a]进行比较,如果当前负载> = [a],(c)显示 503 页面。

问题是,我不知道这通常被称为什么,所以谷歌搜索的结果很少。我知道 Apache 的 mod_qos,但这个客户端在 nginx 上,我找不到 nginx 的等效版本。

任何帮助都将不胜感激。谢谢!

答案1

Nginx 没有完全相同的替代产品,因为实际上并不需要。Nginx 本身不会成为您的瓶颈,这一点几乎可以保证。

但这并不是说你不会遇到问题。很有可能你的后端会达到 CPU 峰值,或者你会用尽带宽来提供文件。不过,Nginx 是一个 HTTP 反向代理,它不想监控事物,我猜这反映在人们为它编写的模块类型上。

基本上,您有两个选择。如果您的后端配置正确,只允许一定数量的进程运行,这样您就不会耗尽内存,并且您的 CPU 不会太忙,那么您可以简单地为 504 网关超时错误定义一个错误页面,并告诉人们您超出了容量,并尝试稍后重新加载。

如果你进行负载平衡,并且希望 nginx 本身来限制请求,那么你可以使用以下方法之一第三方模块例如 EyBalancer 或 HTTP Health Check,但我无法提供有关它们如何处理过载的任何详细信息。

答案2

当系统开始出现故障时,这应该会执行您所请求的操作:error_page 500 502 503 504 /50x.html;只需让 50x.html 页面看起来符合您的喜好即可。

不过,您可能最好只采用某种形式的负载平衡或故障转移来添加另一个 Web 服务器。如果您认为这种情况会更频繁地发生,那么一些云实现将有利于实现这一点。

相关内容