nginx reload热加载实现
nginx reload热加载实现
1.向master进程发送HUP信号(reload 命令),master进程中的ngx_reconfigure设置1
2.master进程校验配置语法是否正确
3.master进程打开新的监听端口(子进程会继承父进程打开的所有端口)
4.master进程用新配置启动新的worker子进程,ngx_start_worker_processes(NGX_PROCESS_JUST_RESPAWN)新的子进
程,ngx_spawn_process函数中将判断NGX_PROCESS_JUST_RESPAWN,将ngx_processes数组respawn和just_spawn都是1
5.master进程向老worker子进程发送QUIT信号
(1)ngx_signal_worker_processes,老worker子进程的exiting设置为1,ngx_processes[i].exiting =1
(2)子进程收到信号将子进程的ngx_quit设置为1
问题:
如何判断向哪些老worker子进程发送信号呢?ngx_process数据中just_spawn标记不是1的
老worker子进程退出后,master进程收到信号SIGCHLD信号,ngx_reap位置1,主进程执行ngx_reap_children函数,为什么没有讲死亡的子进程重新拉起?在ngx_reap_child函数中ngx_processes.ngx_exiting为1的进程不调用ngx_spawn_children生成子进程
6.老worker进程关闭监听句柄(标志新的连接只会到新的worker),设置ngx_exiting为1,处理完当前连接结束进程,定
时器超时则退出worker;
6.1ngx_exiting为1,则开始准备关闭worker进程
(1)根据当前ngx_cycle_t中所有正在处理的连接,调用它们对应的关闭连接处理方法
就是将连接中的close标志位置为1,再调用读事件的处理方法
(2)检查ngx_event_timer_rbtree红黑树不为空,调用ngx_process_events_and_timers方法处理事件
如果为空,表示已经处理完所有的事件,这时将调用所有模块的exit_process方法,最后销毁内存池,退出整个worker进程
nginx reload热加载实现相关推荐
- 为什么 NGINX 的 reload 命令不是热加载?
这段时间在 Reddit 看到一个讨论,为什么 NGINX 不支持热加载?乍看之下很反常识,作为世界第一大 Web 服务器,不支持热加载?难道大家都在使用的 nginx -s reload 命令都用错 ...
- 【Flutter】Flutter 混合开发 ( 混合开发中 Flutter 的 热重启 / 热加载 )
文章目录 前言 一.混合开发中启用 Flutter 的 热重启 / 热加载 二.混合开发中 Flutter 的 热重启 / 热加载 命令测试 三.指定混合应用连接的设备 四.相关资源 前言 上一篇博客 ...
- webpack 热加载原理探索
前言 在使用 dora 作为本地 server 开发一个 React 组件的时候,默认使用了 hmr 插件.每次修改代码后页面直接更新,不需要手动 F5 ,感觉非常惊艳,这体验一旦用上后再也回不去了. ...
- nginx多进程模型之配置热加载---转
http://blog.csdn.net/brainkick/article/details/7176405 前言: 服务器程序通常都会通过相应的配置文件来控制服务器的工作.很多情况下,配置文件会经常 ...
- 热加载和热部署,没听过?看看 Tomcat 是怎么实现的
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 不学无数的程序员 来源 | https://urlify ...
- ik mysql热加载分词_Elasticsearch 之(25)重写IK分词器源码来基于mysql热更新词库...
热更新在上一节< IK分词器配置文件讲解以及自定义词库>自定义词库,每次都是在es的扩展词典中,手动添加新词语,很坑 (1)每次添加完,都要重启es才能生效,非常麻烦 (2)es是分布式的 ...
- gitbook 入门教程之解决windows热加载失败问题
破镜如何贴花黄 gitbook 在 Windows 系统无法热加载,总是报错! gitbook 是一款文档编写利器,可以方便地 markdown 输出成美观优雅的 html ,gitbook serv ...
- springboot-devtools idea或eclipse 热加载
大家好,我是烤鸭: 今天分享一下springboot项目的热加载. 第二种方式在eclipse和idea中都可以.虽然会有一些小坑. 方式有两种: 1. springloaded(无效) < ...
- 实现 tomcat 热加载证书
原文地址:https://my.oschina.net/u/157514/blog/395238 之前一篇中说了如何 建立 https 通信的完整流程,其中涉及了java web容器 tomcat,关 ...
最新文章
- 再谈Linux修改应用程序获得root权限
- 解决2003不支持FLV的方法
- 14门Linux课程,打通你Linux的任督二脉!
- OData Console in C4C and Gateway Client in CRM Fiori
- HDU 1019 Least Common Multiple
- Mysql 插入中文错误:Incorrect string value: '...' for column 'xx' at row 1
- Java植物名录程序_程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_________方法;二是建立线程实例。...
- iOS NSNumber转化NSString之description
- 复杂场景下的多目标跟踪 --心得
- Flink中task之间的数据交换机制
- dcs world f15c教学_【温故知新】DCS如何操作?看这篇就全懂了!
- FIT2CLOUD飞致云正式推出X-Lab孵化器,首期发布两款开源软件
- 推荐一款Mac远程桌面工具——Parallels Client(免费)
- 线下门店如何实现增长获客?
- 微服务架构之监控预警
- 私有云的优缺点_概述实施私有云的优点和缺点
- 飞秋与虚拟机的有关IP设置
- 一个简单的订单生成器 ---- 20160920
- 苹果cms怎么添加2019和2020年份筛选
- EXCEL VBA 之录制宏
热门文章
- 接入网NFV引入路径:CPE、OLT和BNG或将率先云化
- 我对无服务器架构的一些看法
- CCF认证历年试题集
- I.MX6 android 获取framebuffer信息
- XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)
- POJ 2411.Mondriaan's Dream 解题报告
- Javascript中的条件语句和循环语句
- Linux 命令(118)—— bzip2 命令
- Linux 命令(77)—— killall 命令
- [Bzoj4817] [Sdoi2017]树点涂色 (LCT神题)