(转载,非常不错的文章)

一、Nginx的请求处理流程进程结构

1、Nginx的请求处理流程

2、Nginx的进程结构

3、进程作用

1、Master进程

1、是进行work进程的监控管理的
2、看看work进程是否正常工作需不需要进行热部署、需不需要重新载入配置文件

2、Cache manager 缓存的管理

1、缓存为反向代理后端发来的动态请求做缓存使用

2、缓存在不光是在work进程间使用、还要被Cache manager和Cache loader使用

3、Cache loader 载入缓存

二、Nginx的进程结构实例演示

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[root@luoahong vim]# ps -ef|grep nginx

root 24145 1 0 11:08 ? 00:00:00 nginx: master process ../sbin/nginx

nobody 24191 24145 0 11:36 ? 00:00:00 nginx: worker process

nobody 24192 24145 0 11:36 ? 00:00:00 nginx: worker process

root 24196 24153 0 11:38 pts/1 00:00:00 grep --color=auto nginx

[root@luoahong conf]# ../sbin/nginx -s reload

[root@luoahong vim]# ps -ef|grep nginx

root 24145 1 0 11:08 ? 00:00:00 nginx: master process ../sbin/nginx

nobody 24198 24145 0 11:38 ? 00:00:00 nginx: worker process

nobody 24199 24145 0 11:38 ? 00:00:00 nginx: worker process

root 24201 24153 0 11:38 pts/1 00:00:00 grep --color=auto nginx

[root@luoahong vim]#kill -SIGHUP 24145

[root@luoahong vim]# ps -ef|grep nginx

root 24145 1 0 11:08 ? 00:00:00 nginx: master process ../sbin/nginx

nobody 24203 24145 0 11:40 ? 00:00:00 nginx: worker process

nobody 24204 24145 0 11:40 ? 00:00:00 nginx: worker process

root 24206 24153 0 11:40 pts/1 00:00:00 grep --color=auto nginx

kill -SIGHUP 24145和../sbin/nginx -s reload的作用一样

三、使用信号管理Nginx的父子进程

四、reload和热升级

1、reload重载配置文件的真相

1、向master进程发送HUP信号(reload命令)

2、master进程校验配置语法是否正确

3、master进程进程打开新的监听端口

为什么要打开新的监听端口?因为有可能会打开原来没有打开过的端口

4、master进程用新配置启动新的worker子进程

设置定时器 worker_shutdown_timeout

5、master进程向老worker子进程发送OUIT信号

6、老worker进程关闭监听句柄,处理完当前连接后结束进程

2、不停机载入新的配置文件

3、热升级的完整流程(文字)

1、将旧Nginx文件换成新Nginx文件(注意备份)

nginx的Master进程的PID会记录在logs目录的nginx.pid文件中、新nginx和老的nginx 所有的目录必须一致

2、向master进程发送USR2信号

没有办法通过nginx命令行发送信号处理,是因为到目前为止还没有这样的信号

3、master进程修改pid文件名,加后缀.oldbin

nginx的Master进程的PID会记录在logs目录的nginx.pid文件中

4、master进程用新的Nginx文件启动新的master进程
5、向老master进程发送QUIT信号,关闭老master
6、回滚:向老master发送HUP,向新master发送OUIT

4、不停机更新nginx二进制文件

五、优雅地关闭worker进程

worker进程优雅的关闭,主要针对的是HTTP请求。代理websocker协议,TCP,UDP层的时候不能优雅推出

1、设置定时器 worker_shutdown_timeout
2、关闭监听句柄 :保证要关闭的进程不再处理新的连接
3、关闭空闲连接 :为了利用最大化,会保存一些空闲的连接,这时会被关闭。
4、在循环中等待全部连接关闭:每发现一个请求处理完毕就会把这个连接关闭。超过设置的worker_shutdown_timeout的时间,会立即退出。
5、退出进程

作者:罗阿红 出处:http://www.cnblogs.com/luoahong/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

Nginx核心知识100讲学习笔记(陶辉)Nginx架构基础(一)相关推荐

  1. openresty 静态库_Nginx核心知识100讲学习笔记(陶辉)Nginx架构基础(四)

    一.红黑树 1.红黑树 2.红黑树复杂度 3.使用红黑树的模块 1.本地内存做的红黑树 ngx_conf_module ngx_event_timer_rbtree #管理定时器的红黑树 2.管理定时 ...

  2. Linux的slab和nginx的区别,Nginx核心知识100讲》nginx Slab管理器

    极客专栏<Nginx核心知识100讲>38小节的笔记 nginx 不同的worker之间需要共享信息的时候,只能通过共享内存.共享内存会使用链表,红黑树这样的数据结构.但是每个红黑树上有很 ...

  3. SLAM14讲学习笔记(一) 李群李代数基础

    第二次翻看<视觉SLAM十四讲>,发现第一次看过的都忘记了,认真分析了一下,我认为是第一次学习没有弄清楚整体的脉络.因此这次做一个小小的总结,希望不要再过几天又忘掉.前面的内容就没有总结的 ...

  4. SLAM14讲学习笔记(三)非线性优化基础

    这部分的内容,第一次看觉得很难看懂,不知所云:最近第二次看,可以看明白了.本着"先赶理论,后赶代码,借着代码复习C++"的原则,现在先不去学习代码的内容. 这一章的内容,应该先从宏 ...

  5. 视觉SLAM十四讲学习笔记-第六讲学习笔记总结(1)---非线性优化原理

    第六讲学习笔记如下: 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题_goldqiu的博客-CSDN博客 ​​​​​​视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题_ ...

  6. 知识图谱技术学习笔记

    知识图谱技术学习笔记 从一开始的Google搜索,到现在的聊天机器人.大数据风控.证券投资.智能医疗.自适应教育.推荐系统,无一不跟知识图谱相关.它在技术领域的热度也在逐年上升. 本文以通俗易懂的方式 ...

  7. MySQL实战45讲学习笔记

    文章目录 MySQL实战45讲-学习笔记 01 基础架构:一条SQL查询语句是如何执行的? mysql逻辑架构 连接器 查询缓存 分析器 优化器 执行器 02 日志系统:一条SQL更新语句如何执行 r ...

  8. [视觉SLAM十四讲]学习笔记1-刚体运动之旋转矩阵与变换矩阵

    [视觉SLAM十四讲]学习笔记1-刚体运动之旋转矩阵与变换矩阵 1点.向量和坐标系 2 坐标系间的欧式变换 2.1 欧式变换之旋转 2.2 欧式变换之平移 3 变换矩阵与齐次坐标 4 Eigen库的简 ...

  9. 视觉SLAM十四讲学习笔记---前三讲学习笔记总结之SLAM的作用、变换和位姿表示

    经过半年学习SLAM相关知识,对SLAM系统有了一些新的认识,故回看以前的学习记录,做总结和校正. 前三讲学习笔记如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉S ...

最新文章

  1. 课时 21:Kubernetes 存储架构及插件使用(阚俊宝)
  2. mysql去掉小数点多余0_mysql数据库个性化需求:版本号排序
  3. Facebook 为安卓用户推出精简版 Messenger Lite,率先面向发展中国家
  4. Java基础教程【第一章:Java概述】
  5. 【Lua指南】lua脚本世界--快速入门
  6. java11降到java8
  7. 百练4083我爱北大 解析
  8. npm 包管理及 registry 或 proxy 配置
  9. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java基于远程协作的汽车故障诊断系统t6ipg
  10. 【论文笔记之 SN-Net】Interactive Speech and Noise Modeling for Speech Enhancement
  11. Python入门自学进阶-Web框架——16、Django登录/注册
  12. 香港人才引进只看本科排名,“以本科定终身”是否公平?
  13. SMB共享文件夹操作
  14. Flash:设置文档、散件、元件属性
  15. 华硕B550M主板新装CentOS无网络
  16. 软考 - 06 在线订餐管理系统
  17. 使用NotificationCompat兼容包来处理消息通知
  18. 人工智能Java SDK:动物分类识别
  19. BEOL贝尔温湿度监控系统 教你冷链运输小技巧
  20. EDUP无线网卡在 Raspberry配置方法 RTL8188CUS芯片

热门文章

  1. 基于springboot的在线作业管理系统设计与实现
  2. linux驱动开发:重力传感器的了解
  3. 专题:固体力学中应力与应变分析详解(7.应变分析 7.1位移分析)
  4. html 精美list,HTML DOM DList用法及代码示例
  5. APP自动化测试+稳定性测试-Appetizer
  6. 「硬见小百科」深入剖析电感电流
  7. 医学遗传学词汇英语术语英文(Glossary) 7
  8. 写个代码也能“欠债”?为什么要用SonarQube
  9. Booking:摩洛哥传统民宅、日式旅馆等道地特色住宿成为全球旅游新趋势
  10. 李迟2022年9月工作生活总结