Nginx中的worker_processes和worker_connections是什么?

时间:2014-04-30 11:32:52

标签: nginx

请帮助我了解Nginx中worker_processesworker_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中给出的示例,那么我将有所帮助。

3 个答案:

答案 0 :(得分:9)

worker_connections是同时连接的数量;所以他们只是在说明如何计算,例如:

  • 您只运行1个512个连接的进程,您只能为512个客户端提供服务。

  • 如果2个进程各有512个连接,您将能够处理2x512 = 1024个客户端。

连接数受系统上最大打开文件数(RLIMIT_NOFILE)的限制

nginx 有一个更好的,更新的工人连接描述。

fyi,wiki部分被认为是过时的(不要问),现在只有主要的nginx.org/en/docs是首选......

答案 1 :(得分:5)

  • 工作进程:

    • 处理传入请求的 Nginx 工作进程。
    • 将此设置为 worker_process auto; 以根据可用内核自动调整 Nginx 工作进程的数量。
    • 如果您有 IO 访问权限,这可能会超出可用内核的范围。
  • 工作连接:

    • 默认情况下,每个工作进程可以打开 512 个连接。
    • 您可以通过 worker_connections <no> 更改此限制。
    • 您可以将其设置为最大限制 ulimit -n
    • 因此,

    max_clients = worker processes * worker connections

答案 2 :(得分:0)

来自Nginx's Beginner’s Guide

  nginx具有一个主进程和多个工作进程。主要的   主过程的目的是读取和评估配置,   并维护工人流程。工人流程进行实际处理   的请求。 nginx采用基于事件的模型和依赖于操作系统的模型   有效地在工作进程之间分配请求的机制。   工作进程数在配置文件中定义   并可以针对给定的配置进行固定或自动调整   可用CPU内核数