码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx为什么可以支持高并发

时间:2019-11-26 20:03:05      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:exp   cpe   master   现象   处理   放弃   进程   启动   建立连接   

Nginx为什么可以支持高并发

nginx 采用的是多进程+epoll,能实现高并发,其可以支持的并发上限大概是同时支持5W个连接

多进程

 nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程,master进程接收来自外界的连接,并向各worker进程发送信号,每个进程都有可能来处理这个连接,master进程能监控worker进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的worker进程

 

惊群现象

master进程首先通过 socket() 来创建一个socket文件描述符用来监听,然后fork生成子进程(workers 进程),那么当连接进来时,所有子进程都将收到master进程的        通知并“争着”与它建立连接,这就叫“惊群现象”。大量的进程被激活又挂起,只有一个进程可以accept() 到这个连接,这当然会消耗系统资源

nginx对惊群现象的处理accept_mutex(加锁)

nginx 提供了一个 accept_mutex 这个东西,即每个 worker 进程在执行accept之前都需要先获取锁,获取不到就放弃执行accept()。有了这把锁之后,同一时刻,就只会      有一个进程去accpet(),这样就不会有惊群问题了

Nginx为什么可以支持高并发

标签:exp   cpe   master   现象   处理   放弃   进程   启动   建立连接   

原文地址:https://www.cnblogs.com/ghl666/p/11937666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!