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

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.hqwc.cn/news/334553.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑤

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷5 目录 需要竞赛软件包环境以及备赛资源可私信博主!!! 2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷5 模块一 …

普中STM32-PZ6806L开发板(HAL库函数实现-读取内部温度)

简介 主芯片STM32F103ZET6,读取内部温度其他知识 内部温度所在ADC通道 温度计算公式 V25跟Avg_Slope值 参考文档 stm32f103ze.pdf 电压计算公式 Vout Vref * (D / 2^n) 其中Vref代表参考电压, n为ADC的位数, D为ADC输入的数字信号。 实现…

用实例证明函数是go语言的一等公民

概述 在软件编程语言设计中,如果一个实体支持所有通常对其他实体可用的操作,那么这个实体就被称为“一等公民”(first-class functions)。这些操作通常包括作为参数传递、从函数返回、修改并分配给变量等。很多编程语言都实现了将…

【数据库】MySQL锁

一、锁的基本概念 1、锁的定义 锁是协调多个进程或线程并发访问数据库资源的一种机制。 MySQL中的锁是在服务器层或者存储引擎层实现的,保证了数据访问的一致性与有效性。但加锁是消耗资源的,锁的各种操作,包括获得锁、检测锁是否已解除、…

前端适配750px设计稿

全局引入 (function(doc, win) {const docEl doc.documentElement,resizeEvt orientationchange in window ? orientationchange : resizeconst setFont function() {let clientWidth docEl.clientWidth;if (!clientWidth) return;if (clientWidth > 750) {docEl.styl…

中兴通讯5G-A场景突破成果显著,获得行业高度认可

近年来,中兴通讯持续发力5G-A场景,积极进行相关技术研发,为6G时代的到来铺路。2023年12月28日,在2024(第二十届)ICT行业趋势年会“ICT龙虎榜揭榜盛典”当中,中兴通讯获得“2023年度5G-A场景开拓…

springcloud Config配置中心

简介 服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。 SpringCloud提供了ConfigS…

深入剖析pcap中的网络异常:TTL过期攻击、ARP中毒、TCP重传与重叠碎片等

网络流量数据包捕获是网络安全领域的重要部分,而pcap文件则是这一过程的常见载体。为了深入解析pcap文件中潜在的可疑网络流量,我们需要运用强大的网络安全威胁评估与审计工具。这些工具能够帮助我们捕捉、记录、检测和诊断网络中的数据传输问题&#xf…

软件测试|Django 入门:构建Python Web应用的全面指南

引言 Django 是一个强大的Python Web框架,它以快速开发和高度可扩展性而闻名。本文将带您深入了解Django的基本概念和核心功能,帮助您从零开始构建一个简单的Web应用。 什么是Django? Django 是一个基于MVC(模型-视图-控制器&a…

STM32H5培训(一)总览

文章目录 1. 前言2. STM32H5系列MCU的特点和新功能包括性能提升、新外设和安全功能等3. STM32H5系列型号之间的区别和关键资源对比4. 性能和功能亮点6. 开发生态参考: 1. 前言 本篇主要介绍STM32H5系列MCU的特点和新功能,包括全新的M33内核、250M主频处…

网络安全之你的浏览器记录真的安全吗?

密码是每个人最私密的东西,轻易是不会展示给他人的,那么我如何能知道你电脑上浏览器里保存的密码呢?浏览器是大家在网上冲浪最常用的软件,在登录一些网站填写账号密码后,浏览器为了方便大家使用,会提示是否…

Objective-C中使用STL标准库Queue队列

1.修改.m文件为mm 2.导入queue头 #include<queue> 3.使用&#xff1a; #import <Foundation/Foundation.h> #include <cmath> #include <queue> using namespace std;int main(int argc, const char * argv[]) {autoreleasepool {NSLog("C标准…