Nginx 架构基础
2024-08-31 23:21:12
1 Nginx请求处理流程
2 Nginx进程结构
3 Nginx进程管理:信号
3.1 Master进程
- 监控worker进程
- CHLD
- 管理worker进程
- 接收信号
- TERM,INT
- QUIT
- HUP
- USR1
- USR2
- WINCH
3.2 Worker进程
- 接收信号
- TERM,INT
- QUIT
- USR1
- WINCH
3.3 nginx命令行
- reload:HUP
- reopen:USR1
- stop:TERM
- quit:QUIT
4 reload 流程
1)向master进程发送HUP信号(reload命令)
2)master进程校验配置语法是否正确
3)master进行打开新的监听端口
4)master进程用新配置启动新的worker子进程
5)master进程向老worker子进程发送QUIT信号
6)老worker进程关闭监听句柄,处理完当前连接后结束进程
5 热升级流程
1)将旧Ningx文件换成新Nginx文件(注意备份)
2)向master进程发送USR2信号
3)master进程修改pid文件名,加后缀.oldbin(进程自动改的,不需要手动改)
4)master进程用新Nginx文件启动新master进程
5)向老master进程发送QUIT信号,关闭老master
6)回滚:向老master发送HUP,向新master发送QUIT
6 worker进程:优雅的关闭
1)设置定时器worker_shutdown_timeout
2)关闭监听句柄
3)关闭空闲连接
4)在循环中等待全部连接关闭
5)退出进程
7 网络相关
7.1 网络传输
- 应用层
- 传输层
- 网络层
- 链路层
- 物理层
7.2 TCP流与报文
7.3 TCP协议与非阻塞接口
- 读事件
- Accept建立连接
- Read读消息
- 写事件
- Write写信息
8 Nginx事件循环
8.1 epoll
前提
高并发连接中,每次处理的活跃连接数量占比很小
实现
红黑树,链表
使用
创建,操作(添加/修改/删除),获取句柄,关闭
9 模块分类
最新文章
- pages与页面配置
- LinkedHashMap源码详解
- zoj3261 并查集离线处理
- window.location 对象所包含的属性
- NSURLSession使用实战教程
- python基础教程笔记—即时标记(详解)
- Android(java)学习笔记189:eclipse 导入项目是提示:某些项目因位于工作空间目录中而被隐藏。
- DOS和UNIX文本文件之间相互转换的方法
- HTML5的在线视频播放方案
- JCo 指南
- VS2012的变态优化,双循环变单循环
- 大约 C++ 几个方面分析--overload, override, overwrite, rewrite
- U盘做svn版本控制
- C#实现无边框窗体点击任务栏图标正常最小化和还原
- Modelsim调用用do脚本自动化仿真
- apply函数用法
- Android中EditText显示明文与密文的两种方式
- Kestrel.Transport.Sockets分析与使用
- 数字证书原理(ssl,https)
- mysql密码的坑
热门文章
- Hadoop集群 增加节点/增加磁盘
- Trivy 容器镜像扫描工具学习
- GoLang设计模式16 - 模板方法模式
- [spojSUBST1]New Distinct Substrings
- [bzoj1858]序列操作
- Python的数据解析
- Swagger2简单使用教程
- [NOI Online #3 提高组] 魔法值
- Yet Another Minimization Problem
- 深入了解scanf() getchar()和gets()等函数之间的区别