OPS Nginx 基本原理

master与worker

在Nginx启动后,会有2种基础进程。

一个名为Master,一个名为Worker:

image-20210407192423507

Mater负责调度、管理Worker进程,而Worker进程用于真正的与用户进行链接。

Worker进程可以有多个,由于Worker设计为了进程,所以它们之间相互资源隔离互不打扰,不会发生资源安全问题。

请求链接

当有一个链接被Master收到后,Master会通知所有未在服务状态的Worker对该请求进行争抢。

而如果一个Master正在为链接提供服务,则不会参与此处争抢。

image-20210407193028841

Worker数量

Nginx采用I/O多路复用epoll机制,默认开启了1个Worker。

worker_processes  1;

你可以根据服务器CPU数量,适当调整Worker的数量。

一般来说,如16核心CPU则调整为16个Worker。

你可以为每个Worker绑定特定的CPU核心,如下示例:

worker_processes 4

# work 绑定 cpu(4work绑定4cpu):
worker_cpu_affinity 0001 0010 0100 1000

# work 绑定 cpu (4work绑定8cpu中的4个):
worker_cpu_affinity 0000001 00000010 00000100 00001000

链接数

链接数是每个Worker所能承受的最大并发数。

每个Worker最大可处理链接数默认为1024,一般设置为默认值即可:

events {
    worker_connections  1024;
}

如何计算1个Nginx服务最大支持多少链接数呢?

如开启了4个Worker进程,每个Woker进程的链接数为1024,则这个Nginx服务最大支持的链接数为 4 * 1024

值得一提的是,如果是HTTP1.1协议,则每次浏览器访问需要占2个链接数,即为 4 * 1024 / 2

而作为反向代理服务器,最大并发数量应该是 4 * 1024 / 4,因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。

posted @ 2021-04-07 19:42  云崖君  阅读(110)  评论(0编辑  收藏  举报