Nginx进程调度问题详解

Nginx采用的是固定数量的多进程模型,由一个主进程(MasterProcess)和数量与主机CPU核数相同的工作进程协同处理各种事件。这篇文章主要介绍了Nginx进程调度问题,需要的朋友可以参考下

Posted in Servers onSeptember 25, 2021

Nginx采用的是固定数量的多进程模型,由一个主进程(MasterProcess)和数量与主机CPU核数相同的工作进程协同处理各种事件。

Nginx采用的是固定数量的多进程模型,由一个主进程(MasterProcess)和数量与主机CPU核数相同的工作进程协同处理各种事件。

主管理进程负责工作进程的配置加载、启停等操作,工作进程负责处理具体请求。进程间的资源都是独立的,每个工作进程处理多个连接,每个连接由一个工作进程全权处理,不需要进行进程切换,也就不会产生由进程切换引起的资源消耗问题。默认配置下,工作进程的数量与主机CPU核数相同,充分利用CPU和进程的亲缘性(affinity)将工作进程与CPU绑定,从而最大限度地发挥多核CPU的处理能力。

Nginx主进程负责监听外部控制信号,通过频道机制将相关信号操作传递给工作进程,多个工作进程间通过共享内存来共享数据和信息。

Nginx进程调度问题详解

Tips:进程亲缘性(affinity),使进程或线程在指定的CPU(核)上运行。

Nginx的工作进程有如下几种调度方式:

  • 无调度模式:所有工作进程都会在连接事件被触发时争相与客户端建立连接,建立连接成功则开始处理客户端请求。无调度模式下所有进程都会争抢资源,但最终只有一个进程可以与客户端建立连接,对于系统而言这将在瞬间产生大量的资源消耗,这就是所谓的惊群现象。
  • 互斥锁模式:每个工作进程都会周期性地争抢互斥锁,一旦某个工作进程抢到互斥锁,就表示其拥有接收HTTP建立连接事件的处理权,并将当前进程的socket监听注入事件引擎(如epoll)中,接收外部的连接事件。其他工作进程只能继续处理已经建立连接的读写事件,并周期性地轮询查看互斥锁的状态,只有互斥锁被释放后工作进程才可以抢占互斥锁,获取HTTP建立连接事件的处理权。当工作进程最大连接数的1/8与该进程可用连接(free_connection)的差大于或等于1时,则放弃本轮争抢互斥锁的机会,不再接收新的连接请求,只处理已建立连接的读写事件。互斥锁模式有效地避免了惊群现象,对于大量HTTP的短连接,该机制有效避免了因工作进程争抢事件处理权而产生的资源消耗。但对于大量启用长连接方式的HTTP连接,互斥锁模式会将压力集中在少数工作进程上,进而因工作进程负载不均而导致QPS下降。
  • 套接字分片:套接字分片是由内核提供的一种分配机制,该机制允许每个工作进程都有一组相同的监听套接字。当有外部连接请求时,由内核决定哪个工作进程的套接字监听可以接收连接。这有效避免了惊群现象的发生,相比互斥锁机制提高了多核系统的性能。该功能需要在配置listen指令时启用reuseport参数。

Tips:Nginx 1.11.3以后的版本中互斥锁模式默认是关闭的。套接字分片模式则因为由Linux内核提供进程的调度机制,所以性能最好。

到此这篇关于Nginx进程调度问题的文章就介绍到这了,更多相关Nginx进程调度内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
Mar 31 Servers
使用nginx动态转换图片大小生成缩略图
Mar 31 Servers
nginx实现发布静态资源的方法
Mar 31 Servers
Nginx配置并兼容HTTP实现代码解析
Mar 31 Servers
Nginx内网单机反向代理的实现
Nov 07 Servers
详解nginx location指令
Jan 18 Servers
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
Feb 12 Servers
Nginx的基本概念和原理
Mar 21 Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
Nginx开源可视化配置工具NginxConfig使用教程
Jun 21 Servers
GPU服务器的多用户配置方法
Jul 07 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 #Servers
关于nginx 实现jira反向代理的问题
Windows下用Nginx配置https服务器及反向代理的问题
Sep 25 #Servers
nginx安装以及配置的详细过程记录
Sep 15 #Servers
Nginx缓存设置案例详解
Sep 15 #Servers
图文详解Nginx版本平滑升级方案
Sep 15 #Servers
Nginx配置文件详解以及优化建议指南
Sep 15 #Servers
You might like
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
使用Ajax与服务器(JSON)通信实例
2016/11/04 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
详解Node全局变量global模块
2017/09/28 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
layui实现三级联动效果
2019/07/26 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
python3.5仿微软计算器程序
2020/03/30 Python
django实现用户登陆功能详解
2017/12/11 Python
python 自动去除空行的实例
2018/07/24 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
企业管理专业个人求职信范文
2013/09/24 职场文书
化学相关工作求职信
2013/10/02 职场文书
学生学习总结的自我评价
2013/10/22 职场文书
校园安全检查制度
2014/02/03 职场文书
工程承包协议书
2014/04/22 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
文体活动总结
2015/02/04 职场文书
测量员岗位职责
2015/02/14 职场文书
白银帝国观后感
2015/06/17 职场文书
政审证明材料
2015/06/19 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书