Nginx快速入门:worker、master进程的作用和热部署原理(十)

news2024/10/1 17:36:41

0. 引言

我们通过查询nginx进程,可以发现nginx有两个进程:worker和master。一个程序启动了两个进程,那么这两个进程的作用和区别是什么呢?nginx又是如何利用这两个进程进行工作的呢?nginx不停机热部署又是如何实现的?
在这里插入图片描述

这是我们学习nginx要掌握的基础原理,于是今天我们暂时放下实操,从原理入手,了解nginx

1. 概念

1.1 什么是master、worker进程

master进程为nginx主进程,worker为工作进程,worker进程可以为多个,worker进程数一般是服务器CPU核数,不然过多的worker数,会导致进程相互竞争CPU,反而导致更多的上下文切换,降低效率。

master主进程会作为监控进程,主要负责启动和监控其他worker进程,同时也会负责将请求进行分发给worker进程,master进程会管理这些worker进程的全生命周期,比如启动、停止、平滑升级等。也负责系统资源调配给worker进程,整理来看master是个管理者。

而worker进程就是工作者了,主要负责接收和处理请求转发、以及静态资源等访问,总之就是业务相关的处理都是由worker进程执行。
在这里插入图片描述

1.2 worker进程的生命周期

1、nginx启动时,master进程会读取配置文件中配置的worker_processes创建对应个数的worker进程
2、每个worker进程通过master进程fork复制出来(源码ngx_spawn_process方法可以看出)
在这里插入图片描述

3、然后worker进程会执行自己的初始化代码,进入运行状态
4、运行期间,worker进程处于一个无限循环状态,等待客户请求
在这里插入图片描述

5、当客户请求到达,请求会从master进程转发给worker进程,worker进程进行实际的处理,并返回数据给客户
6、nginx停止时,master进程会收到终止信号,然后master会通知所有的worker进程
7、worker进程接收到停止通知后,会等待当前所有请求处理完成后,进行清理工作:释放资源、关闭打开的文件描述符、关闭监听端口等
8、worker进程终止后,其进程标识符 PID会被master进程回收
在这里插入图片描述

1.3 worker进程之间资源竞争

我们说明了worker进程可能有多个,有多个同类型进程就会涉及到访问相同的资源,那么也就出现了资源竞争问题。

资源竞争会产生各种问题,如脏读等,nginx如何解决呢?

答案就是通过加锁,获取到锁的进程才能竞争到资源,否则就进入等待锁释放,在nginx的核心事务处理方法ngx_process_events_and_timers中可以看到加锁操作
在这里插入图片描述
而nginx中是通过原子变量,信号量,文件fd加锁的方式来综合实现的一套互斥锁机制

2. Nginx热部署原理

nginx热更新实现主要得益于worker进程的机制,其热更新过程如下:
1、修改nginx.conf配置文件,执行nginx -s reload重新加载配置文件
2、master进程读取新配置,根据新配置启动新的worker进程
3、master进程向老worker进程发出停止信号
4、worker进程停止接收新的客户请求,将已有的请求处理完成后关闭
5、使用新配置启动的worker进程来接收用户请求

总结一句话,nginx热更新的原理就是:旧的业务进程继续处理已有的请求,但是不接收新的请求,按新配置启动新的进程,接收新的请求,旧请求处理完后停止旧进程,这样就完成了配置的热更新。
在这里插入图片描述

3. 总结

如上我们对nginx中两种进程的基本原理做了基础的认知,也说明了nginx实现热部署的原理和步骤,也希望大家能结合之前讲解的实操步骤,更好的理解nginx中的各种奇妙设计。后续我们会继续实操+原理穿插讲解,带大家持续入门nginx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1362654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用UUP从windows更新服务器下载windows10原版镜像

UUP是指Windows 10中的一种更新技术,全称为Unified Update Platform。UUP的目标是提供更快、更高效的更新体验,它通过增量更新的方式来更新操作系统,只下载和安装实际变化的部分,而不是整个更新包。这样可以节省带宽和时间&#x…

LLM漫谈(二)| QAnything支持任意格式文件或数据库的本地知识库问答系统

一、QAnything介绍 QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。 您的任何格式的本地文件都可以往里扔,即可获得准确、快速、靠谱的问答体验。 目前已支持格式: PDF&…

Mac Parallels19.1.0 Install CentOS7.9

0、资源准备 # centos7.9镜像一份 链接: https://pan.baidu.com/s/1acIjUnsTGhk_2cYCZLSoGg?pwd6666 提取码: 6666 --来自百度网盘超级会员v7的分享1、打开PD 2、选择镜像进行安装 指定镜像名称 创建 进行密码设置 安装目的地点开后直接点击完成 网络和主机名称 开…

SonarQube 漏洞扫描

SonarQube 漏洞扫描 一、部署服务 1.1 docker方式部署 #安装docker curl -L download.beyourself.org.cn/shell-project/os/get-docker-latest.sh | sh yum install -y docker-compose #进去输入:set paste可以保证不穿行 [rootlocalhost sonar]# vim docker-compose.yml v…

什么猫粮便宜又好?什么牌子的主食冻干猫粮健康又实惠?

冻干对于猫咪的好处,相信许多养猫的朋友们都非常了解。冻干猫粮是将含有水分的新鲜肉在低温且真空的环境中急速冻结,使得冰直接升华成水蒸气,从而排掉水分,让肉变得干燥。这种方式可以保证蛋白质和维生素等物质的生物活力&#xf…

Zabbix实现网络响应超时监控

一、简介 在IT运维管理过程中,网络响应超时是比较常见的故障之一。尽管网络响应超时的原因多种多样,解决方案各不相同,但归根结底解决故障的首要前提是发现问题。 在网络超时监控方面,Zabbix能够实时捕获并响应网络设备的超时事…

技术方向:比较与选择

针对未入行、刚入行、工作好几年依然不停切换择业方向、长期技术无法突破的人。 1 技术栈 一切的开始其实是对编程的兴趣,兴趣指引你跨过所有障碍。 编程语言是基础,编程语言之上,发展为两个主要方向,服务和大数据。 2 编程语言…

【一】达梦数据库安装和使用-Windows

达梦数据库安装和使用-Windows 简介: 新能源行业关系到国计民生,保障能源安全的意识不容懈怠,近些年各行各业都在推进数字化进程,能源行业在国家3060双碳目标提出之后更是进行的如火如荼,能源互联网方面在数字化的同时…

软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用

在Python中,函数参数是定义在函数头部的变量,用于接收传递给函数的数据。Python函数参数有四种类型:必传参数、默认参数、可变参数和关键字参数。每种类型都有不同的使用方式和适用场景。本文将详细介绍这四种函数参数的使用方法。 Python函…

如何做一个炫酷的Github个人简介(3DContribution)

文章目录 前言3D-Contrib第一步第二步第三步第四步第五步第六步 前言 最近放假了,毕设目前也不太想做,先搞一点小玩意玩玩,让自己的github看起来好看点。也顺便学学这个action是怎么个事。 3D-Contrib 先给大家看一下效果 我的个人主页&am…

RH850P1X芯片学习笔记-A/D Converter (ADCF)

文章目录 Features of RH850/P1x-C ADCFNumber of UnitsRegister Base AddressClock SupplyInterrupts and DMAHardware ResetExternal Input/Output SignalsVirtual Channel OverviewFunctional OverviewBlock DiagramPhysical Channels, Virtual Channels and Scan Groups Re…

【airsim】python控制airsim

使用airsim 1.8.1编译完成,进过block项目在cpp测试后,开始踩坑使用python。 使用AirSim\PythonClient\setup.py或者pip安装airsim。 python setup.py install或者 pip install airsim此时,windows电脑的环境信息 (air_py38) D:\code\Gith…

UV胶水与聚氯乙烯PVC材料的塑料粘接,效果如何?

UV胶水可以与聚氯乙烯PVC很好地粘接。 PVC是一种常见的塑料材料,UV胶水通常对PVC具有良好的粘接性能。UV胶水可以在紫外线照射下迅速固化,形成坚固的粘接,因此通常被用于PVC制品的粘接和修复。 UV胶水与PVC粘接的优点: 1. 快速固…

Java并发集合详解

第1章:引言 大家好,我是小黑,在这篇博客中,咱们将一起深入探索Java中的并发集合。多线程编程是一个不可或缺的部分,它能让程序运行得更快,处理更多的任务。但同时,多线程也带来了一些挑战&…

Linux 编译安装 Nginx

目录 一、前言二、四种安装方式介绍三、本文安装方式:源码安装3.1、安装依赖库3.2、开始安装 Nginx3.3、Nginx 相关操作3.4、把 Nginx 注册成系统服务 四、结尾 一、前言 Nginx 是一款轻量级的 Web 服务器、[反向代理]服务器,由于它的内存占用少&#xf…

独立式键盘控制步进电机实验

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit S1P1^4; //将S1位定义为P1.4引脚 sbit S2P1^5; //将S2位定义为P1.5引脚 sbit S3P1^6; //将S3位定义为P1.6引脚 unsigned char keyval; //储存按键值 unsigned char ID; …

etcd基本介绍

etcd基本介绍 ETCD是SoreOs公司发布的一个分布式的、高可用的、key-value存储的数据库。基于Go语言实现&#xff0c;k8s中也使用了ETCD作为数据库。主要用于共享配置和服务发现。相对于zookeeper采用的Paxos&#xff0c;ETCD采用的是Raft算法&#xff0c;该算法具备的性能更佳…

Hadoop集群三节点搭建(二)

一、克隆三台主机&#xff08;hadoop102 hadoop103 hadoop104&#xff09; 以master为样板机克隆三台出来&#xff0c;克隆前先把master关机 按照上面的步骤克隆其他两个就可以了&#xff0c;记得修改ip和hostname 二、编写集群同步脚本 在/home/attest/ 创建bin目录&…

基于SSM的《数据库系统原理》课程平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Matlab:遗传算法,模拟退火算法练习题

1、遗传算法 &#xff08;1&#xff09;遗传算法是一种基于自然选择原理和自然遗传机 制的搜索&#xff08;寻优&#xff09;算法&#xff0c;它是模拟自然界中的生命进化机制&#xff0c;在人工系统中实现特定目 标的优化。遗传算法的实质是通过群体搜索技术&#xff0c;根据…