说说 Nginx 进程之间的关系

356 阅读1分钟

在生产环境下,Nginx 都会使用一个 master 进程来管理多个 worker 进程。一般情况下, worker 进程数与服务器上的 CPU 核心数相同。worker 进程负责提供服务,而 master 进程负责监控与管理这些 worker 进程。 worker 进程之间会通过共享内存 、 原子操作等进程间通信机制来实现负载均衡等功能。

以 master/worker 方式同时启动多个进程,有这些优势:

  1. master 进程专注于管理工作,当任意一个 worker 进程出现严重错误时, master 进程会立刻启动新的 worker 进程,实现高可用。
  2. 多个 worker 进程处理请求可以充分利用 SMP 多核架构,从而实现真正意义上的多核并发处理。当 Nginx 上的进程数与 CPU 核心数相等,并让每个 worker 进程都绑定特定的 CPU 核心时,就可以保障进程间切换最小化,保障高性能。

对称多处理 " ( SymmetricalMulti-Processing )简称 SMP ,是指在一个计算机上汇集了一组处理器 ( 多 CPU ) ,各 CPU 之间共享内存子系统以及总线结构。它是相对非对称多处理技术而言的,是一种应用十分广泛的并行技术。

通过 cat 命令,可以查看到 Linux 服务器下的 CPU 数量:

 cat /proc/cpuinfo|grep 'processor'

可以看出这台服务器拥有 3 核 CPU,那么 Nginx 默认也会建立 3 个 worker 进程(通过 ps -ef|grep nginx 命令 ):


Nginx 通过 master/worker 这种架构,就可以实现高可用、高性能咯O(∩_∩)O哈哈~