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模型
、