Nginx学习积累笔记---Nginx进程模型解读

Nginx学习积累笔记—Nginx进程模型解读

1.进程解读

1. Nginx启动后,以daemon多进程⽅式(助手进程)在后台运⾏,包括⼀个Master进程和多个Worker进程,Master进程是领导,是⽼⼤,Worker进程是⼲活的⼩弟。不会因为客户端关闭的情况,Nginx就结束了。

在这里插入图片描述

2. master进程:主要是管理worker进程,⽐如:
  1. master进程接收外界信号向各worker进程发送信号(./nginx -s reload)
  2. 监控worker进程的运⾏状态,当worker进程异常退出后Master进程会⾃动重新启动新的worker进程
3. work进程:worker进程具体处理⽹络请求。
  1. worker进程具体处理⽹络请求。多个worker进程之间是对等的,他们同等竞争来⾃客户端的请求,各进程互相之间是独⽴的。⼀个请求,只可能在⼀个worker进程中处理,⼀个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,⼀般设置与机器cpu核数⼀致

2. Nginx进程模型示意图

  1. 计算反向代理最大并发数公式:worker_processes * worker_connections/4
    在这里插入图片描述
  2. 以 ./nginx -s reload 来说明nginx信号处理这部分
    1. 管理员向master发送请求,master进程对配置⽂件进⾏语法检查
    2. 尝试配置(⽐如修改了监听端⼝,那就尝试分配新的监听端⼝)
    3. 尝试成功则使⽤新的配置,新建worker进程
    4. 新建成功,给旧的worker进程发送关闭消息(但是此时旧的worker还有请求没被处理完)
    5. 旧的worker进程收到信号会继续服务,直到把当前进程接收到的请求处理完毕后关闭
  3. 所以reload之后worker进程pid是发⽣了变化的
    在这里插入图片描述

3.Nginx中Worker请求处理机制:worker进程处理请求部分的说明

例如
1. 我们监听9003端⼝,⼀个请求到来时,如果有多个worker进程,那么每个worker进程都有可能处理这个链接。
2. master进程创建之后,会建⽴好需要监听的的socket,然后从master进程再fork出多个worker进程。所以,所有worker进程的监听描述符listenfd在新连接到来时都变得可读。
3. nginx使⽤互斥锁来保证只有⼀个workder进程能够处理请求,最先拿到互斥锁的那个进程注册listenfd读事件,在读事件⾥调⽤accept接受该连接,然后解析、处理、返回客户端

4. Nginx多进程模型的好处

  1. 每个worker进程都是独⽴的,不需要加锁,节省开销
  2. 每个worker进程都是独⽴的,互不影响,⼀个异常结束,其他的照样能提供服务
  3. 多进程模型为reload热部署机制提供了⽀撑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值