Nginx 的reload,升级以及关闭流程

news2024/11/20 14:41:50

一、reload流程

1 向master进程发送HUP信号(reload命令)
2 master进程校验配置语法是否正确;
3 master打开可能引入的新的监听端口;
4 master用新的配置文件启动新的worker子进程;
5 启动新的worker子进程之后,master向老的worker子进程发送QUIT信号(优雅的退出);
6 老的子进程收到QUIT信号之后,关闭监听句柄(也就是说,新的连接只会到新的子进程),处理完当前的连接后就结束进程;

二、热升级的流程

将久的Nginx文件替换成新的Nginx文件(注意备份);

向master进程发送USR2信号;

Nginx还没有提供相应的命令行

之后,现有的master进程会修改pid文件名,加后缀oldbin;

这是为了给新的master进程让路;

老的master进程,用新的Nginx二进制文件,启动新的master进程;

此时,会出现两个master进程和老的worker进程。新的master进程会启动新的worker进程

向老的master进程发送QUIT信号,关闭老的进程;

此时老的master进程会关闭老的worker进程。此时,热升级已经结束,老的master进程会一直保留,这是为了方便回滚。

回滚:向老的master进程发送HUP,向新的master发送QUIT;

三、关闭

优雅的关闭,是对worker进程而言的。因为只有worker进程才会处理请求。

优雅的关闭,是指worker进程可以识别当前的连接没有处理请求,这个时候再将连接关闭。

Nginx是不是一直能做到优雅地关闭子进程呢? 并不是的,比如说代理websocket协议时,在

websocket协议后面进行 通讯的fream帧中,Nginx是不解析帧的,所以此时Nginx是无法知道处 理

是否已经完成了的;再比如,Nginx做tcp和udp层的反向代理的时候, 它也没法知道一个请求究竟

要经过多少次报文才算真正地结束,但是对于 http请求来说,Nginx是可以做到的,所以我们说的

优雅地关闭针对的一般 是http请求。

设置一个定时器

worker_shutdown_timeout,nginx会设置一个标示为,表示进入优雅的关闭的流程。

关闭监听句柄

保证worker进程不会处理新的连接了。

关闭所有的空闲连接

在循环中等待全部连接关闭

如果等待的时候超过了设定的worker_shutdown_timeout时间,连接也会被强制关闭。

退出进程

 在主配置文件(main)中 增加 参数:worker_shutdown_timeout   240s;

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

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

相关文章

小马赠书【第8期】清华社 618 IT BOOK 多得活动(送书5本)

本期 敬 之 共精心挑选了 15 本 IT 相关书籍,包含 前端、后端、数据分析、人工智能、python 等各个领域。关于如何参与等具体活动信息请看活动详情页,以下是 15 本 IT 书籍介绍: 活动详情页:小马赠书【第8期】 1. 《Linux设备驱动…

怎么入手性能测试,重点以及各项流程

之前在性能测试学习路线里,提到过《软件性能测试、分析与调优实践之路》这本书。 昨天看到之前自己记的读书笔记,整理一下发出来,希望对读者有所帮助。 网上关于性能测试的文章大多数时间比较久远,或者知识点比较散,…

南大一作!科学家发现全新量子态 | Nature速递

光子盒研究院 马萨诸塞大学助理教授Tigran Sedrakyan在内的一个物理学家团队最近在《自然》杂志上宣布,他们已经发现了一种新的物质阶段——“手性玻色液态(chiral Bose-liquid state)”,这一突破为理解物理世界本质的古老努力开辟了一条全新道路。 团队…

【目标跟踪】MOT数据集GroundTruth可视化

MOT数据集格式简介 MOT15数据集下载&#xff1a;https://pan.baidu.com/s/1foGrBXvsanW8BI4eybqfWg?pwd8888 以下为一行gt示例&#xff1a; 1,1,1367,393,73,225,1,-1,-1,-1 各列数据对应含义如下 <frame>,<id>,<bb_left>,<bb_top>,<bb_width&g…

autocut

在讲 OpenAI Whisper 前先做了一个剪视频小工具【论文精读44】_哔哩哔哩_bilibili更多论文&#xff1a;https://github.com/mli/paper-reading, 视频播放量 58633、弹幕量 233、点赞数 2732、投硬币枚数 1630、收藏人数 1465、转发人数 604, 视频作者 跟李沐学AI, 作者简介 &am…

什么是python,一篇带你详细了解Python

Python是一种跨平台的计算机程序设计语言&#xff0c;是ABC语言的替代品&#xff0c;属于面向对象的动态类型语言&#xff0c;最初被设计用于编写自动化脚本&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越来越多被用于独立的、大型项目的开发。 python前景…

挖掘用户真实需求 避坑5大技巧

1、用户总是“说一套 做一套” 在进行需求市场调研时&#xff0c;我们问1000个用户&#xff0c;是否想要黄金&#xff0c;几乎所有的用户都是肯定的回答。如果我们以此认定&#xff0c;黄金是用户的真实需求会过于草率。 我们需继续追问用户&#xff1a;买黄金做什么&#xff1…

【微信小程序开发】第 7 课 - 小程序的组件

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、小程序中组件的分类 3、常用的视图容器类组件 3.1、view 组件 3.2、scroll - view 组件 3.3、swiper 和 swiper…

【youcans动手学模型】Xception 模型-CIFAR10图像分类

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans动手学模型】Xception 模型-CIFAR10图像分类 1. Xception 神经网络模型1.1 模型简介1.2 论文介绍1.3 分析与讨论 2. 在 PyTorch 中定义 Xception 模型类2.1 深度可分离卷积2.2 带残差连接的…

【九章斩题录】从尾到头打印链表(JZ6)

精品题解 &#x1f525; 《九章斩题录》 &#x1f448; 猛戳订阅 目录 JZ6 - 从尾到头打印链表 「 法一 」链表元素存入数组后再反转 「 法二 」递归大法 「 法三 」栈 JZ6 - 从尾到头打印链表 &#x1f4da; 题目&#xff1a;输入一个链表的头节点&#xff0c;按链表从…

苹果iOS 17新功能:重置密码 72 小时内可使用旧密码再次重置

一些用户可能会遇到&#xff0c;在修改了 iPhone 密码之后&#xff0c;突然忘记新密码的情况。现在苹果在 iOS 17 中加入了新的解决方案&#xff1a;在重置密码的 72 小时之内&#xff0c;如果用户不小心忘记了新设置的密码&#xff0c;仍然可以使用旧密码进行再次重置。 在重…

TS系列之工具类型Partial、Required、Pick、Record详解,示例

TS系列之工具类型Partial、Required、Pick、Record详解&#xff0c;示例 文章目录 前言一、Partial<Type>二、Required<Type>三、Pick<Type, Keys>四、Record<Keys, Type>总结 前言 本片文章主要利用上一篇所学的keyof做一个延申与扩展的学习。在Type…

OpenGaussDB2.0.1

目录 1. GaussDB版本2. OpenGaussDB介绍3. 单节点安装3.1 环境配置3.2 安装 4. 远程连接设置 1. GaussDB版本 GaussDB的版本&#xff1a; GaussDB 100&#xff1a;目前暂不发布&#xff0c;公司合作伙伴需向华为提交申请&#xff08;GaussDB 100 将在 2020 年被正式命名为 Gaus…

Redis入门 - 3种特殊数据类型

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis入门 - 3种特殊数据类型 | CoderMast编程桅杆https://www.codermast.com/database/redis/three-special-datatype.html 在我们平常的业务中基本只会使用到Redis的基本数据类型&#xff08;String、List、Hash、Set、S…

浅谈.NET语言开发应用领域

.NET语言是一种跨平台的开发框架&#xff0c;适用于各种应用程序的开发。以下是一些常见的.NET语言开发应用领域&#xff1a; 桌面应用程序开发&#xff1a;使用.NET框架开发的桌面应用程序可以在Windows操作系统上运行&#xff0c;包括Windows Forms和WPF。这些应用程序可以用…

CentOS开机报错““error can‘t find command ‘:‘“处理方法

CentOS开机报错"error cant find command :"处理方法 本文为故障描述和问题记录。converterP2V迁移CentOS7到虚拟机&#xff0c;开机报错"error can’t find command ‘:’"的处理方法。 本文为CentOS7的操作记录&#xff0c;其他版本可以参考&#xff0c;…

CASAIM光学彩色三维扫描仪助力文物艺术品三维数字化3D打印

文物艺术品数字化&#xff0c;实际上是一种文物艺术品信息的记录方式&#xff0c;除了运用视频、照片、录音等多媒体形式将某些文物进行记录外&#xff0c;文物艺术品数字化主要是指针对有形文化遗产采用非接触式扫描得到的三维数字化记录&#xff0c;通过实景三维建模&#xf…

GitHub 上传自己的项目

文章目录 前言一、步骤1.GitHub 创建项目2.Git 上传本地项目到 GitHub3.Git 命令整理 总结 前言 不附 Demo 连接的博客不是好博客&#xff0c;所以我们要做个乐于助人&#xff0c;有责任心的人&#xff0c;这篇文章手把手教你如何在 GitHub 上传自己的项目&#xff0c; 一、步…

【OpenMMLab AI实战营二期笔记】第五天 MMPretrain代码课

1.环境安装 conda activate mmpre # 激活创建好的环境,确保安装好pytorch,可以使用gpu git clone https://github.com/open-mmlab/mmpretrain.git # 下载mmpre源码 cd mmpretrain # 进入mmpretrian目录 pip install openmim # 安装管理工具 mim install -e ".[multimodal…

JAVA开发运维(系统上到生产环境准备工作)

一、前言 java项目在开发环境开发完成&#xff0c;在测试环境测试没有问题后&#xff0c;就需要发布到生产环境&#xff0c;如果系统是对公众的&#xff0c;那就需要很多工作了。比如服务器申请&#xff0c;域名申请&#xff0c;渗透测试&#xff0c;漏洞扫描&#xff0c;公网…