iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >Nginx进程调度问题详解
  • 273
分享到

Nginx进程调度问题详解

2024-04-02 19:04:59 273人浏览 独家记忆
摘要

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

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

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

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

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进程调度内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Nginx进程调度问题详解

本文链接: https://www.lsjlt.com/news/136192.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Nginx进程调度问题详解
    Nginx采用的是固定数量的多进程模型,由一个主进程(MasterProcess)和数量与主机CPU核数相同的工作进程协同处理各种事件。 Nginx采用的是固定数量的多进程模型,由一...
    99+
    2024-04-02
  • 改进 Golang 程序,解决精度问题
    优化 Golang 程序,解决精度丢失困扰,需要具体代码示例 在日常的编程过程中,我们时常会遇到精度丢失的问题,特别是在使用 Golang 进行数值计算时。这些精度丢失可能是由于浮点数...
    99+
    2024-02-24
    优化 golang 精度
  • Nginx中default_server指令问题详解
    目录序言1.基本介绍 2.显示定义一个 default server 3.指定server_name 为 ip4. 隐式的 default server...
    99+
    2022-12-27
    nginx default_server nginx default_server问题 default_server指令
  • C++贪心算法处理多机调度问题详解
    多机调度问题思路 1、把作业按加工所用的时间从大到小排序 2、如果作业数目比机器的数目少或相等,则直接把作业分配下去 3、 如果作业数目比机器的数目多,则每台机器上先分配一个作业,如...
    99+
    2024-04-02
  • 详解nginx进程锁的实现
    目录一、 nginx进程锁的作用二、入门级锁使用三、nginx进程锁的实现3.1、锁的数据结构3.2、基于fd的上锁/解锁实现3.3、nginx锁实例的初始化3.4、基于共享内存的上...
    99+
    2024-04-02
  • 详解java中BigDecimal精度问题
    目录一、背景二、BigDecimal构造函数1、四种构造函数2、为什么会出现这种情况3、如何解决三、常用方法1、常用方法2、取舍规则四、格式化一、背景 在实际开发中,对于 不需要任何...
    99+
    2024-04-02
  • Java子线程调用RequestContextHolder.getRequestAttributes()方法问题详解
    相信很多开发过程中都用过RequestContextHolder.getRequestAttributes(),没错,我也经常用,但今天出现了问题,获取到的实例是空的 原因是因为我新...
    99+
    2024-04-02
  • linux的进程调度怎么理解
    这篇文章主要讲解了“linux的进程调度怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux的进程调度怎么理解”吧!名词在此之前,我们必须(当然也不是必须,但了解原理有利于理解和...
    99+
    2023-06-16
  • 如何使用Nginx解决跨域问题详解
    目录先来说一下什么是同源策略什么是跨域?跨域分类Nginx解决跨域问题解释1、Access-Control-Allow-Origin2、Access-Control-Allow-He...
    99+
    2024-04-02
  • Java调度线程池ScheduledThreadPoolExecutor不执行问题怎么解决
    本篇内容主要讲解“Java调度线程池ScheduledThreadPoolExecutor不执行问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java调度线程池ScheduledTh...
    99+
    2023-07-05
  • 调用Process.waitfor导致的进程挂起问题及解决
    目录问题背景问题描述挂起原因解决方法JDK上的说明背后的故事测试pipe的大小Linux上pipe分析问题背景 如果要在Java中调用shell脚本时,可以使用Runtime.exe...
    99+
    2024-04-02
  • JavaScript进阶教程之函数的定义、调用及this指向问题详解
    目录前言一:函数的定义 1.1 命名函数 1.2 匿名函数 1.3 利用 new Function() 声明函数1.4 重要结论&n...
    99+
    2024-04-02
  • Nginx解决跨域问题
    目录 前言 一、跨域问题 1.什么是跨域  2.CORS 二、Nginx跨域处理 三.补充 前言 这几天出现了一个问题,我们中的一个A系统需要给B系统调用,造成了跨域问题。 一、跨域问题 1.什么是跨域 当一个请求url的协议、域...
    99+
    2023-09-02
    nginx 服务器 开发语言
  • matlab鸟群算法求解车间调度问题详解及实现源码
    目录一、车间调度简介1 车间调度定义2 传统作业车间调度3 柔性作业车间调度二、蝴蝶优化算法(MBO)简介1 介绍2 香味3 具体算法三、部分源代码五、matlab版本及参考文献一、...
    99+
    2024-04-02
  • 分布式任务调度xxl-job问题解决
    目录前言xxl-job简介功能如下快速入门2.1 初始化“调度数据库”2.2 编译源码2.3 配置部署“调度中心”2.4 配置部署&l...
    99+
    2024-04-02
  • 如何解决调用Process.waitfor导致的进程挂起问题
    ...
    99+
    2023-06-22
  • Nginx进程管理和重载原理详解
    进程结构图 Nginx是多进程结构,多进程结构设计是为了保证Nginx的高可用高可靠,包含: master进程:父进程,负责worker进程的管理 worker进程...
    99+
    2024-04-02
  • 详解Python中的数据精度问题
    目录一、python运算时精度问题1.运行时精度问题2.解决方案:添加方法二、python四舍五入时精度问题1.使用round与浮点数格式化时候的精度问题 2.解决方案,使...
    99+
    2024-04-02
  • 详解使用ChatGPT解决Nginx反向代理的问题
    目录背景使用ChatGPT解决总结背景 我有 3 台服务器,1台Web服务器对外提供访问,另外两台服务器 QC1 和 QC2 用于存储不同设备识别后保存的照片。它们的 IP 地址...
    99+
    2023-03-20
    ChatGPT Nginx反向代理 Nginx反向代理解决
  • 一文详解Golang协程调度器scheduler
    目录1. 调度器scheduler的作用2. GMP模型3. 调度机制1. 调度器scheduler的作用 我们都知道,在Go语言中,程序运行的最小单元是gorouines。 然而程...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作