nginx的工做流程

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

 

 

 

 

 

 

 

 

 

 

相關文章
相關標籤/搜索