004 nginx的进程模型

一 . 概述

  nginx的高性能是大家所了解的,nginx之所以拥有这么好的性能和它的进程模型是分不开的.

  当nginx启动的时候,它会以后台进程的方式进行,然后nginx会启动一个master进程和多个worker进程.也就是说,nginx是采用多进程的方式进程的.

  现在我们需要了解一下master进程和worker进程的工作方式.

  master进程:master进程的主要的功能就是完成对worker进程的管理,包括获取外界的响应,监控worker进程的运行状态,也就是说,我们发现nginx中的master进程是不负责网络请求的处理的.

  现在我们就说一下worker进程的主要作用了,那就是负责网络请求的处理了.

  那么,我们的nginx之中到底是有多少个worker进程的呢?在标准的配置文件之中,我们一般将worker进程的数量配置为与我们的CPU的核心数是一致的.

现在,我们来看看我们上面描述的nginx的基本结构:

  

 我们可以看到基本的结构了,在上面的图之中我们看到了一个有趣的地方,那就是管理员的概念.

  管理员通过操作master来控制nginx的运行,使用的方式就是发送信号量. 比如启动nginx,重启nginx服务器等,

  在nginx之后的版本之中,出现了很多的脚本命令,如 ,/nginx 就是启动nginx ,如 ./nginx -s reload 就是重启nginx ,ru ./nginx -s stop 就是关闭nginx的服务器.


二 . nginx的运行模式

  我们在上面说到了,master进程的主要工作就是完成worker进程的控制管理的,其实每一个worker进程都是从master进程fork出来的,也就是一个子进程的概念.

  这么说来,我们的master进程就能完全的控制worker进程的运行.

  当一个请求过来的时候,每一个worker进程都在master进程的worker进程表之中说明自己的状态,如果状态正常,那么该worker进程就会完成请求的竞争.

  解决竞争的方式也很常见,就是按照一个互斥锁的功能实现的.这就保证了一个请求只能有一个worker进程进行处理.

现在我们知道了,nginx之中所有的worker之间是相互独立的,也就是说一个worker进程出现问题,其它的worker进程是没有影响的.


三 .异步非阻塞模式  

  我们在上面的介绍之中看到,在nginx之中是由worker进程进程请求的处理的,那么我们的worker进程那么的少,怎么实现高并发的处理的呢?

  nginx使用的就是异步非阻塞的模式完成高性能的实现的,

在nginx之中,使用了epoll模型完成的这种异步非阻塞的方式,这是一种基于事件模型完成的异步非阻塞的模式.

  当我们的事件没有处理好,那么我们的请求就会进入epoll的池之中,等到事件处理好之后就会回调该请求,

采用异步非阻塞的方式,nginx就实现了高并发的性能.

猜你喜欢

转载自www.cnblogs.com/trekxu/p/9285665.html
004
今日推荐