nginx 的基础知识(二)

Nginx 多进程网络模型

  • 进程模型 nginx启动后以daemon的方式在后台运行,后台进程包括一个master进程和多个worker进程
  • master进程主要作用,接收来自外界的信号;向各worker进程发送信号;监控worker进程的运行状态;当worker进程退出后,会自动重新启动新的worker进程
  • worker进程用于处理网络事件,各个worker进程之间对等且相互独立,同等竞争客户端的请求,一个请求只能在一个worker中处理,worker进程数一般为cpu核数
    • nginx一般只做高并发处理,基本无io操作,属于cpu密集型操作,处理是瞬时的
    • 单核心处理多进程时,是排队处理的
    • 每个worker都是单线程的进程,若worker数量大于cpu内核数,则增大进程间切换带来的消耗(lunix是抢占式内核),要使用worker-cpu-affinity配置来绑定cpu内核,不绑定的话,多个worker抢占同一个cpu,会出现同步问题,

 

nginx进程控制

  • 通过master进程实现
  • 手动信号 通过kill 向master进程发送信号,kill -hup pid 通知nginx重启
  • 自动信号 命令行参数 -s reload 或者 -s stop

网络事件

  • 异步非阻塞 类似 libevent master进程先建好需要listen的socket,fork多个worker进程,每个worker进程去accept这个socket;当client连接到来时,所有accept的worker进程都会接到通知,只有一个会accpet成功,共享锁accept-mutex,进程接受到连接以后,开始读取请求,解析请求,处理请求,产生数据返回给客户端,最后断开连接

 

posted @ 2021-05-26 17:20  简直😓  阅读(124)  评论(0编辑  收藏  举报