zoukankan      html  css  js  c++  java
  • Nginx-->基础-->理论-->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的事件处理模型相关。

    ②: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的非常好的高并发性能。

  • 相关阅读:
    Mysql推荐使用规范
    程序员应该经常浏览的技术网站
    百度,腾讯,阿里等互联网公司年终奖发多少
    JNI技术详解,让程序有飞一般的感觉
    日志:分布式系统的核心
    Spring Boot七:Spring boot集成MyBatis
    通俗理解TCP的三次握手
    JDBC添加数据
    JDBC概念
    今天是阳光明媚的一天
  • 原文地址:https://www.cnblogs.com/mangguoxiansheng/p/6073868.html
Copyright © 2011-2022 走看看