我们有一个公共网站,该网站还为内部系统(在专用 IP 地址上)提供请求。当网站变得繁忙并且服务器负载增加时,所有请求都会变慢。这对于公共网站来说是可以接受的,但对于内部系统来说则不可接受。
在 Nginx(或 Debian Linux)中,有没有办法对请求进行优先级排序,以便内部系统请求获得优先权?
请不要建议增加服务器大小、缓存或类似无用的建议。
以供参考:
- Debian Squeeze
- Nginx
- PHP-FPM
答案1
简单的回答:不。
长答案:集群是你的朋友。很明显,你网站所在的服务器不足以承担你施加的负载。
答案2
您无法确定优先级,但您可以限制外部请求并允许所有内部请求或来自某些 IP 的请求,也许使用 limit_req 和代理传递,但就像 Nathan 说的,建立集群是简单的方法。
答案3
只需稍加努力,就可以通过固定资源来“确定优先级”。
- 启动 2 个独立
nginx
实例 - 用于
CPUAffinity
将一些 CPU 固定到每个 CPU 上(例如,90% 的 CPU 为公共,10% 为私有)。
这样,您可以确保始终为特定进程(这里是特定nginx
进程)保留/优先分配某些资源。
https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Scheduling