nginx工作原理詳解

2021-10-25 18:50:10 字數 2283 閱讀 9331

**:進入nginx的大致三種流量:web、email及tcp

nginx中三個狀態機:

狀態機作用:nginx採用epoll非同步非阻塞事件驅動處理引擎,需要狀態機識別和處理請求,將解析出來的請求引導到靜態資源或磁碟快取(做反向**時)。

當靜態資源太多,記憶體不足以快取時,磁碟呼叫會退化成阻塞呼叫,所以我們使用執行緒池來處理。

執行緒池詳解

總的來說:執行緒池就是乙個單獨的處理機制,所有的worker程序處理起來耗時的任務都會交給他,他處理完之後返回結果。worker程序不需要等待,客戶端等待就行。

對每乙個處理完成的請求會記錄access訪問日誌和error錯誤日誌(記錄到磁碟中的)。

nginx作反向**時可以使用應用層協議http、fastcgi等將請求**到其他伺服器。

為什麼nginx採用多程序結構而不是多執行緒結構?

nginx目的:保持高可用性和高可靠性。

如果採用多執行緒模型,執行緒之間共享位址空間,如果某個第三方模組引發位址空間導致的段錯誤時,在位址越界出現時,會導致整個nginx全部掛掉。而多程序就不會出現這種問題。

程序作用

master程序:負責監控每個worker程序工作狀態。

worker程序:處理請求。快取需要在多個worker之間進行共享。

cache manager:做反向**時為後端發來的動態請求做快取使用的。做快取管理。

cache loader:做反向**時為後端發來的動態請求做快取使用的。做快取載入。

程序間的通訊方式:共享記憶體。

為什麼有多個worker程序?

nginx採用事件驅動模型,希望每個worker程序從頭到尾占有乙個cpu。我們需要將worker程序數配置成與cpu核數相同的同時將每乙個worker和乙個cpu繫結在一起。這樣可以更好的使用每乙個cpu核上的cpu快取來減少快取失效的命中率。

nginx -s reload

kill -sighup 父程序id

會將老的子程序(worker和cache程序)優雅的退出,載入配置檔案,啟動新的子程序。

kill -sigterm  子程序id
子程序退出告知父程序,父程序會重新起乙個子程序,維持原有worker數量。

解析:子程序終止時會給父程序傳送chld訊號,如果worker程序由於某些bug意外終止,master程序會立馬發現並拉起worker程序。

通過nginx命令列方式傳送訊號:

term,int:立刻停止nginx程序

quit:優雅停止nginx

hup:過載配置檔案

usr1:重新開啟日誌檔案,做日誌檔案切割

專門針對做熱部署時使用,只能通過kill(linux命令列)傳送訊號:

usr2

winch

reload流程:

1、向master程序傳送hup訊號(reload命令)

2、master程序校驗配置語法是否正確(nginx -t)

3、master程序開啟新的監聽埠(子程序會繼承所以master開啟的埠,我們可能引入了新的監聽埠)

4、master程序用新配置啟動新的worker子程序

5、master程序向老worker子程序發生quit訊號

6、老worker程序關閉監聽控制代碼,處理完當前連線後結束程序

master程序啟動新的子程序時會加乙個定時器worker_shutdown_timeout,定時器到時後會立刻強制退出還未退出的老worker程序。

1、將舊nginx檔案替換成新nginx檔案

2、向老master程序傳送usr2訊號

3、master程序修改pid檔名,加字尾.oldbin(儲存老pid檔案)

4、master程序用新nginx檔案啟動新master程序。(目前為止有兩個master程序)

5、向老master程序傳送winch訊號,關閉老worker

6、回滾:向老master傳送hup,向新master傳送quit。

詳解Nginx 工作原理

nginx工作原理 nginx由核心和模組組成。ngwww.cppcns.cominx本身做的工作實際很少,當它接到乙個http請求時,它僅僅是通過查詢配置檔案將此次請求對映到乙個loca程式設計客棧tion block,而此location中所配置的各個指令則會啟動不同的模組去完成工作,因此模組可...

Nginx工作原理

nginx web伺服器主要是由各種模組協同工作,模組從結構上分為核心模組,基礎模 塊和第三方模組,其中三類模組分別如下 1 核心模組 http模組 event模組和mail模組等 2 基礎模組 http access模組 http fastcgi模組 http proxy模組和http rewri...

Nginx工作原理

nginx engine x 是乙個高效能http 反向 imap pop3 smtp伺服器 nginx web伺服器主要是由各種模組協同工作 從結構上分為 核心模組 http模組 event模組和mail模組等 基礎模組 http access模組 http fastcgi模組 http prox...