nginx请求处理流程
nginx进程结构
master进程:是作为worker进程管理的
worker进程:处理真正的请求的而master进程则是管控这些进程的工作方式的;缓存是在多个worker进程共享数据的;进程间通信使用共享内存解决的,请求使用的缓存有worker管控的
cache magager进程 :缓存管理
cache loader 进程:缓存载入
nginx设计的哲学理念:为什么多进程而非多线程;因为线程之间是共享同一个进程空间的,当第三方模块出现异常时会导致nginx挂掉,而多进程就不会出现这样的问题
为什么worker进程会很多:因为nginx采用事件驱动的模型,它希望每个worker进程从头到尾占用一颗cpu,往往把worker进程数量配置根worker进程一致以外,还需要把每个worker进程与CPU绑定在一起,这样可以更好使用每个cpu上的CPU缓存,来减少缓存失效命中率。
nginx进程间的信号管理
reload流程
1.向master进程发送HUP信号(reload)
2.maseer 进程校验配置语法是否正确
3.master进程打开新监听的端口
4.master进程用新配置启动worker子进程
5.master进程向老worker子进程发送quit信号
6.老worker进程关闭监听句柄,并处理完当前连接后退出结束进程
热升级完整流程
1.将就的nginx文件缓存新的nginx文件。注意备份,及编译新版本nginx指定的路径要与就版本中一致
2.向master进程发送USR2信号
3.master进程会自己修改PID文件名,加后缀.oldbm
4.master进程用新的NGINX文件启动新的master进程
5.向老master进程发送quit信号,关闭老master进程;但老的master进程会保存下来
6.回滚:向老的master发送HUP,向新master发送QUIT信号
流程图
针对HTTP请求优雅关闭work进程,如果设置了超时时间有一些连接会立即停止
网络收发与nginx的事件对应关系;一个网络连接对应两个事件一个读事件一个写事件
网络传输中的报文
TCP协议与非阻塞接口
nginx事件循环
epoll模型
、