我正在设置 nginx 来为 Drupal 安装提供服务,但我似乎发现有关 nginx 工作进程设置的相互矛盾的信息。一个网站说需要两个,一个说需要五个,还有一个说每个处理器一个……
我应该如何选择 nginx 工作进程的数量?如果这有区别的话,它是 VMWare 集群上的客户虚拟机,我给它一个虚拟处理器。
答案1
Nginx 与 Apache 和其他按连接运行的 Web 服务器不同。它使用一个主进程来启动和监视实际处理连接的少量工作进程。我的建议是从默认的工作进程数(即 1)开始。
worker_processes 1;
如果您发现 nginx worker 花费太多时间阻塞 IO,则只需增加此值。除非它每秒处理数百个请求,否则这种情况不会发生。
您可能还会发现这些设置很有用。
worker_rlimit_nofile 8192;
events {
worker_connections 2048;
use epoll;
}
答案2
在 SMP 系统上,至少应启动 nCPU 工作进程:四核处理器 - 四个等等。这对于代理来说已经足够了。
如果您要为一些包含大量静态内容的网站提供服务,最好添加更多工作器 - 每个磁盘一个。
如果您的磁盘子系统太差或负载过高,nginx 工作进程可能会被 I/O 操作锁定,无法处理其他请求。在这种情况下,您应该将工作进程数量增加到某个合适的值(可能是几十个),或者为磁盘缓存添加一些内存。
查看“ps ax”打印输出:处于“D”状态的工作进程已被锁定。增加直到至少有 nCPU 工作进程未被阻塞。