在Nginx中,worker_processes和worker_connections是什么?

e5njpo68  于 2023-08-03  发布在  Nginx
关注(0)|答案(4)|浏览(168)

请帮助我理解worker_processesworker_connections在Nginx中是什么以及它们之间的关系。我在Nginx directives下看了看,说:
worker_processes
辅助进程是一个单线程进程。
如果Nginx正在进行CPU密集型工作,例如SSL或gzipping,并且您有2个或更多CPU/核心,那么您可以将worker_processes设置为等于CPU或核心的数量。
如果您正在处理大量静态文件,并且文件的总大小大于可用内存,则可以增加worker_processes以充分利用磁盘带宽。
worker_connections
main部分中的worker_connections和worker_processes允许您计算可以处理的最大客户端:
max clients = worker_processes * worker_connections
所以我理解worker_processes是单线程的,它的值在CPU密集型工作中很有帮助,但我无法理解“允许你处理你能处理的最大客户端”。
如果有人能给予一个worker_processes中给出的例子,对我理解会有帮助。

uyhoqukh

uyhoqukh1#

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

  • 如果你只运行一个进程,连接数为512,那么你只能为512个客户端提供服务。
  • 如果两个进程各有512个连接,那么你将能够处理2x 512 =1024个客户端。
  • 连接数受系统上最大打开文件数(RLIMIT_NOFILE)的限制 *

nginx对worker连接有更好的更新描述。

  • 仅供参考,wiki部分被认为是过时的(不要问),现在只有主要的nginx.org/en/docs是首选的... *
ssgvzors

ssgvzors2#

  • 工作进程:
  • 处理传入请求的Nginx工作进程。
  • 将其设置为worker_process auto;,以根据可用内核自动调整Nginx工作进程的数量。
  • 如果您有IO访问权限,这可能超出可用内核的范围。
  • 工作机连接:
  • 默认情况下,每个工作进程可以打开512个连接。
  • 您可以通过worker_connections <no>更改此限制。
  • 您可以将其设置为最大限制ulimit -n
  • 因此,

max_clients = worker processes * worker connections

qmb5sa22

qmb5sa223#

Nginx's Beginner’s Guide
nginx有一个主进程和几个工作进程。主进程的主要目的是读取和评估配置,以及维护工作进程。工作进程实际处理请求。nginx采用基于事件的模型和依赖于操作系统的机制来有效地在工作进程之间分发请求。工作进程的数量在配置文件中定义,对于给定的配置,工作进程的数量可以是固定的,也可以根据可用CPU内核的数量自动调整

ldxq2e6h

ldxq2e6h4#

这就是我从进程和线程的Angular 来理解它的方式。Worker_process相当于process,worker_connection相当于thread。
一个进程(Worker_process)可以有n个线程(worker_connections)。

相关问题