Nginx-->基础-->理论-->nginx进程模型

1、nginx的进程模型基础nginx

如上图,是nginx的基本进程模型。编程

1.nginx的master进程与worker进程关系网络

nginx的master进程负责worker进程的管理,包括建立worker进程、发送信号给worker、监控worker进程的运行状态等。master进程是worker进程的管理者。在实际的nginx运行中:并发

master进程是以root身份运行的,而worker进程是以咱们建立的nginx对应用户或者nginx.conf中的user  nobody;这个配置中指定的用户如nobody用户运行的。框架

2.master进程概述异步

①:master进程个数,master进程的主要任务是管理worker进程,这就意味着,nginx在启动时只建立一个master进程,也只有一个master进程。master进程是能够取消的,这么作能够实现让nginx以单进程的方式运行,实际生产环境中不会这么操做。高并发

②:用户的操做相关信号,不是直接对worker通讯,而是经过将信号传递给master进程, master进程再与worker进程交互。性能

3.worker进程概述优化

①:worker进程个数,通常与物理机的CPU核数一致,这里的缘由与nginx的进程模型以及nginx的事件处理模型相关。ui

②:worker进程之间的关系,进程之间是平等且相互独立的,一个具体的请求只能被一个worker进程处理,其余worker进程不会参与进来。

③:worker进程之间不会相互影响,一个worker进程挂掉不会影响别的worker进程,如CPU核数是4,worker进程正常是4个,当一个worker进程挂掉后(看进程是如何挂掉的,具体看进程收到什么类型的信号去挂掉进程,不是全部worker进程挂掉后都会从新启动),master进程可以监控到并主动启动一个新的worker进程。

4.master进程与worker进程工做过程简述

①master进程

master进程是不须要处理网络事件的,如从用户过来的请求是不须要master进程去亲自处理的,即为不负责具体的业务的执行,负责的事经过管理worker等子进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。

②worker进程

worker进程负责处理具体的网络事件,接收并处理用户的链接,接收链接后楷书读取请求、解析请求、处理请求,产生数据后在将数据返回给客户端,最后再讲链接断开,其中,worker进程是根据来自master的信号进行相关的操做。

worker进行接收到的信号对框架的意义
信号 对应进程中全局标志位变量 意义
QUIT ngx_quit 优雅关闭worker进程
TERM或INT ngx_terminate 强制关闭进程
USR1 ngx_reopen 从新打开全部文件
WINCH ngx_debug_quit

目前没有实际的意义

HUP  

平滑读取配置文件

USR2  

平滑升级

 

 

 

 

 

 

 

 

5.nginx进程模型优点

①worker进程之间相互独立,彼此之间互不影响,不须要加锁,节省了锁所须要的开销,而且编程和问题定位复杂度低。

②进程之间互不影响,避免了进程之间的相互影响,下降风险。

6.nginx的高并发

①异步与同步

同步:同步意味着执行须要一步步进行,在上一步操做完成以前没法进行下一步操做

异步:执行不用严格按照顺序一步步执行,下一步的操做没必要等待上一步操做的完成

②阻塞与非阻塞

阻塞:进程在执行过程当中,遇到如I/O操做,须要消耗比较长的时间,操做系统会将进程阻塞,将CPU控制权让给其余工做进程,这种调度方式为阻塞

非阻塞:进程在执行过程当中,无论是否遇到如I/O须要消耗比较长时间的操做,都不会以阻塞的方式等待I/O操做完成或者数据返回,而只是将I/O请求发送给操做系统,继续执行下一跳语句。当操做系统完成I/O操做后,会通知执行I/O操做的进程,进程会在特定的时候处理这个事件。

nginx之因此能够实现高并发,得益于nginx采用异步非阻塞的方式。

异步非阻塞,使用epoll和大量的细节处优化,造就了nginx的很是好的高并发性能。

相关文章
相关标签/搜索