请帮助我了解Nginx中worker_processes
和worker_connections
的含义以及它们之间的关系。我查看Nginx directives下面说:
worker_processes
工作进程是单线程进程。
如果Nginx正在进行CPU密集型工作(如SSL或gzipping),并且您有2个或更多CPU /核心,那么您可以将worker_processes设置为等于CPU或核心数。
如果您提供大量静态文件且文件总大小大于可用内存,则可以增加worker_processes以充分利用磁盘带宽。
worker_connections
主要部分的worker_connections和worker_processes允许您计算可以处理的最大客户端:
max clients = worker_processes * worker_connections
所以我理解worker_processes
是单线程的,它的值在CPU密集型工作中很有用,但我无法理解“允许你处理你可以处理的最大客户端”。
如果有人可以提供worker_processes
中给出的示例,那么我将有所帮助。
答案 0 :(得分:9)
worker_connections是同时连接的数量;所以他们只是在说明如何计算,例如:
您只运行1个512个连接的进程,您只能为512个客户端提供服务。
如果2个进程各有512个连接,您将能够处理2x512 = 1024个客户端。
连接数受系统上最大打开文件数(RLIMIT_NOFILE)的限制
nginx
有一个更好的,更新的工人连接描述。
fyi,wiki部分被认为是过时的(不要问),现在只有主要的nginx.org/en/docs是首选......
答案 1 :(得分:5)
工作进程:
worker_process auto;
以根据可用内核自动调整 Nginx 工作进程的数量。工作连接:
worker_connections <no>
更改此限制。ulimit -n
。max_clients = worker processes * worker connections
答案 2 :(得分:0)
nginx具有一个主进程和多个工作进程。主要的 主过程的目的是读取和评估配置, 并维护工人流程。工人流程进行实际处理 的请求。 nginx采用基于事件的模型和依赖于操作系统的模型 有效地在工作进程之间分配请求的机制。 工作进程数在配置文件中定义 并可以针对给定的配置进行固定或自动调整 可用CPU内核数