2. nginx架構基礎
1 Nginx請求處理流程

2 Nginx進程結構

3 Nginx進程管理:信號
3.1 Master進程
- 監(jiān)控worker進程
- CHLD
- 管理worker進程
- 接收信號
- TERM,INT
- QUIT
- HUP
- USR1
- USR2
- WINCH
3.2 Worker進程
- 接收信號
- TERM,INT
- QUIT
- USR1
- WINCH
3.3 nginx命令行
- reload:HUP
- reopen:USR1
- stop:TERM
- quit:QUIT
4 reload 流程
1)向master進程發(fā)送HUP信號(reload命令)
2)master進程校驗配置語法是否正確
3)master進行打開新的監(jiān)聽端口
4)master進程用新配置啟動新的worker子進程
5)master進程向老worker子進程發(fā)送QUIT信號
6)老worker進程關閉監(jiān)聽句柄,處理完當前連接后結束進程

5 熱升級流程
1)將舊Ningx文件換成新Nginx文件(注意備份)
2)向master進程發(fā)送USR2信號
3)master進程修改pid文件名,加后綴.oldbin(進程自動改的,不需要手動改)
4)master進程用新Nginx文件啟動新master進程
5)向老master進程發(fā)送QUIT信號,關閉老master
6)回滾:向老master發(fā)送HUP,向新master發(fā)送QUIT

6 worker進程:優(yōu)雅的關閉
1)設置定時器worker_shutdown_timeout
2)關閉監(jiān)聽句柄
3)關閉空閑連接
4)在循環(huán)中等待全部連接關閉
5)退出進程
7 網(wǎng)絡相關
7.1 網(wǎng)絡傳輸
- 應用層
- 傳輸層
- 網(wǎng)絡層
- 鏈路層
- 物理層

7.2 TCP流與報文

7.3 TCP協(xié)議與非阻塞接口
- 讀事件
- Accept建立連接
- Read讀消息
- 寫事件
- Write寫信息

8 Nginx事件循環(huán)


8.1 epoll
前提
高并發(fā)連接中,每次處理的活躍連接數(shù)量占比很小
實現(xiàn)
紅黑樹,鏈表
使用
創(chuàng)建,操作(添加/修改/刪除),獲取句柄,關閉

9 模塊分類

時間是個偉大的作者,必將給出完美的答案。

浙公網(wǎng)安備 33010602011771號