Nginx 架构基础篇
1、Nginx的请求处理流程
http状态机:等待上游epoll请求,当内存满额时,使用线程池磁盘阻塞调用。
2、nginx的进程结构
ps aux | grep nginx
master作为父进程,有很多子进程,nginx的父子进程是通过信号管理的。
kill -SIGNUP 9170
SIGNUP与reload作用相同,都是管理信号的命令。
3、reload 重载配置文件的真相
- 01.向master进程发送HUP信号
- 02.master进程校验配置语法是否正确
- 03.master进程打开新的监听端口
- 04.master进程用新配置启动新的worker子进程
- 05.master进程向老worker子进程发送quit信号
- 06.老worker进程关闭监听句柄,处理完当前连接后结束进程
4、优雅的关闭Nginx
- 01.设置定时器
- 02.关闭监听句柄
- 03.关闭空闲连接
- 04.在循环中等待全部连接关闭
- 05.退出进程
5、阻塞/非阻塞
阻塞/非阻塞 是指操作系统或者底层的C库提供的方法或者是系统调用。在调用这个方法的时候会进入sleep状态,当前的条件不满足的情况下,操作系统把当前进程主动的切换成另外进程。这样就是阻塞方法。
6、nginx间的通讯方式
基础同步工具
- 信号
- 共享内存
高级通讯方式
- 锁
- Slab内存管理器