nginx请求处理流程nginx
nginx进程结构缓存
master进程:是做为worker进程管理的网络
worker进程:处理真正的请求的而master进程则是管控这些进程的工做方式的;缓存是在多个worker进程共享数据的;进程间通讯使用共享内存解决的,请求使用的缓存有worker管控的多线程
cache magager进程 :缓存管理ui
cache loader 进程:缓存载入线程
nginx设计的哲学理念:为何多进程而非多线程;由于线程之间是共享同一个进程空间的,当第三方模块出现异常时会致使nginx挂掉,而多进程就不会出现这样的问题设计
为何worker进程会不少:由于nginx采用事件驱动的模型,它但愿每一个worker进程从头至尾占用一颗cpu,每每把worker进程数量配置根worker进程一致之外,还须要把每一个worker进程与CPU绑定在一块儿,这样能够更好使用每一个cpu上的CPU缓存,来减小缓存失效命中率。blog
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模型
、