Nginx工作机制
Nginx分为单工作进程和多工作进程两种模式。
通常采用1个master+多个worker进程配合异步非阻塞的工作机制。
master进程主要负责管理自身和下属的worker进程,worker负责处理请求。
master(master进程会先建立好需要listen的socket)---fork生成子进程,继承socket(每个进程监控同一ip和端口)---当一个连接进入,产生惊群现象,所有进程都会收到通知,但只有一个进程能够抢到互斥锁,accept这个连接,其他进程则失败。
惊群现象:指一个fd事件被触发后,等候这个fd的所有进程、线程都被唤醒,但是只有一个会去响应。
worker进程工作:
当一个worker在accept这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,一个完整的请求。一个请求,完全由worker进程来处理,而且只在一个worker中处理。
为什么Nginx支持高并发?
1个worker进程只有一个主线程,采用异步非阻塞的工作方式实现高并发。即每进来一个请求,会有一个worker去处理,但不是全程处理,处理到可能发生阻塞的地方(比如向后端FPM转发请求,并等待请求返回),这个worker不会这个傻等,它会在发送请求后,注册一个事件:如果有返回了,通知我。于是worker就去休息(继续监听连接),再有请求进来同样处理。一旦FPM返回了,就会触发事件,worker接手,请求才会往下走。
Apache的模式呢
对于Apache,每个请求都会独占一个工作线程,当并发数到达几千时,就同时有几千的线程在处理请求,对操作系统来说,占用内存非常大,线程的上下文切换带来的CPU开销也很大,性能就很难上去。
Nginx工作机制的更多相关文章
- 深入理解PHP之:Nginx 与 FPM 的工作机制
网络上有很多关于如何配置 Nginx + FPM 的文章,但它们更多从操作的角度出发,告诉我们怎么做,但却没有告诉我们为什么要这么做,本文从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理 ...
- nginx大概工作机制
1.master和worker nginx启动后,会有2种进程:worker和master;worker可能有多个:
- nginx 缓存机制
nginx 缓存机制 Nginx缓存的基本思路 利用请求的局部性原理,将请求过的内容在本地建立一个副本,下次访问时不再连接到后端服务器,直接响应本地内容 Nginx服务器启动后,会对本地磁盘上的缓 ...
- Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇
Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Internet与中国 Internet最早来源于美 ...
- android 6.0 高通平台sensor 工作机制及流程(原创)
最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...
- Java IO工作机制分析
Java的IO类都在java.io包下,这些类大致可分为以下4种: 基于字节操作的 I/O 接口:InputStream 和 OutputStream 基于字符操作的 I/O 接口:Writer 和 ...
- malloc 函数工作机制(转)
malloc()工作机制 malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表.调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块.然后,将 ...
- springMVC工作机制和框架搭建配置说明
先说一下springMVC的工作机制 1.springmvc把 所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作. 2.Dispatcher ...
- CKPT进程工作机制
CKPT进程工作示意图 2.CKPT进程工作机制 检查点进程被触发的条件为: a> 当发生日志组切换时: b> 用户提交了事务时(commit): c> Redo log buf ...
随机推荐
- ubuntu1604-Python35-cuda9-cudnn7-gpu-dockerfile
一,在某目录下有如下文件: -rw-r--r-- 1 root root 1643293725 9月 2 11:46 cuda_9.0.176_384.81_linux.run -rw-r--r-- ...
- wed.xml 中 filter、servlet 配置格式
1.wed.xml 中 filter 配置格式 <filter> <filter-name>filterName</filter-name> <filter- ...
- PHP开发环境 PHP培训教程
PHP开发环境 兄弟连小编整理如下: Centos安装apache,mysql,php环境 yum -y install httpd php mysql mysql-server php- ...
- jquery lt选择器 语法
jquery lt选择器 语法 作用::lt 选择器选取带有小于指定 index 值的元素.index 值从 0 开始.经常与其他元素/选择器一起使用,来选择指定的组中特定序号之前的元素(如上面的例子 ...
- 消息队列之--Kafak
序言 消息丢失如何解决? 解耦 异步 并行 Docker安装Kafak 1.下载镜像 # zookeeper镜像 docker pull wurstmeister/zookeeper # kafka镜 ...
- 图的深度优先搜索(DFS)和广度优先搜索(BFS)算法
深度优先(DFS) 深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接 ...
- jQuery-validate插件初级篇
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- legend3---laravel验证码使用
legend3---laravel验证码使用 一.总结 一句话总结: 1.先用composer下载好captcha扩展:配置好composer.json然后运行composer update 2.引入 ...
- CListCtrl死锁的问题
ON_COMMAND(ID_DELETE_1,OnDelete)在响应删除事件的时候 控件应该内部有锁,在这个时候调用GetItemCount()函数会阻塞
- PDF to PNG to PDF
PDF to PNG to PDF PDF 2 PNG step 1, install PyMuPDF pip install pymupdf -i http://mirrors.aliyun.com ...