Nginx极客时间:Nginx的进程结构

1. Nginx进程结构:

Nginx有两种进程结构:一种是 单进程结构,一种是 多进程结构。


单进程结构实际上不适用于生产环境,只适合在开发、调试时使用。这是因为在生产环境中需要保证Nginx足够健壮,且能够充分利用 CPU多核的特性。

因此默认配置中也是打开多进程的Nginx。



2. Nginx多进程结构:

Nginx多进程结构下,进程种类有三类:

master进程 + worker进程 + cache进程


Master进程的功能是用来管理Worker进程,真正处理用户请求的是Worker进程,Master进程负责监控每一个Worker进程是否在正常工作、是否需要热部署等。

Cache进程负责对上游服务器发来的动态请求响应做缓存处理,缓存是需要在多个worker进程间共享的,CL进程(Cache Loader)负责做缓存的载入,CM进程(Cache Manager)负责做缓存的管理,实际上如果需要对用户请求返回缓冲中的内容,则还是由Worker进程来处理。


Worker进程的个数:

Master进程只有一个,Cache进程分别有一个Manage进程和一个Load进程。
对于Worker进程,一般配置为与CPU的核数一致,Nginx希望每一个Worker进程从头到尾占有一个核。
因此在配置Nginx时,除了需要把Worker进程的数量配置成与CPU核数一致外,还需要把Worker进程与某一个CPU核绑定,这样可以更好的使用每个核上的CPU缓存,提高缓存命中率。

另外,在配置Nginx时也会把Nginx的进程优先级调到最高,这样在操作系统进行进程调度时会为Nginx分配更多的时间片,从而减少无谓的进程间切换。


Nginx多进程结构示意图:

在这里插入图片描述



3. 为什么Nginx使用的是多进程结构而不是多线程结构?

最核心的目的,就是要保证Nginx的高可用性和高可靠性。


如果Nginx使用多线程结构,因为线程之间是共享内存地址空间的,如果某个第三方模块因为内存地址访问越界等问题引发了段错误,将会导致整个Nginx进程都挂掉。而采用多进程结构则基本不会出现这样的问题。


Nginx在多进程结构设计上同样遵循了实现高可用性、高可靠性的思路:
在Master进程中,通常第三方模块是不会加入功能代码的。虽然Nginx允许第三方模块在Master进程中添加独有的、自定义的一些方法,但是通常没有第三方模块会这么做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值