Nginx極客時間 Nginx的程序結構

2021-10-19 13:19:43 字數 1193 閱讀 9903

nginx有兩種程序結構:一種是 單程序結構,一種是 多程序結構。

單程序結構實際上不適用於生產環境,只適合在開發、除錯時使用。這是因為在生產環境中需要保證nginx足夠健壯,且能夠充分利用 cpu多核的特性。

因此預設配置中也是開啟多程序的nginx。

nginx多程序結構下,程序種類有三類:

master程序 + worker程序 + cache程序

master程序的功能是用來管理worker程序,真正處理使用者請求的是worker程序,master程序負責監控每乙個worker程序是否在正常工作、是否需要熱部署等。

cache程序負責對上游伺服器發來的動態請求響應做快取處理,快取是需要在多個worker程序間共享的,cl程序(cache loader)負責做快取的載入,cm程序(cache manager)負責做快取的管理,實際上如果需要對使用者請求返回緩衝中的內容,則還是由worker程序來處理。

worker程序的個數:

master程序只有乙個,cache程序分別有乙個manage程序和乙個load程序。

對於worker程序,一般配置為與cpu的核數一致,nginx希望每乙個worker程序從頭到尾占有乙個核。

因此在配置nginx時,除了需要把worker程序的數量配置成與cpu核數一致外,還需要把worker程序與某乙個cpu核繫結,這樣可以更好的使用每個核上的cpu快取,提高快取命中率。

另外,在配置nginx時也會把nginx的程序優先順序調到最高,這樣在作業系統進行程序排程時會為nginx分配更多的時間片,從而減少無謂的程序間切換。

nginx多程序結構示意圖:

最核心的目的,就是要保證nginx的高可用性和高可靠性。

如果nginx使用多執行緒結構,因為執行緒之間是共享記憶體位址空間的,如果某個第三方模組因為記憶體位址訪問越界等問題引發了段錯誤,將會導致整個nginx程序都掛掉。而採用多程序結構則基本不會出現這樣的問題。

nginx在多程序結構設計上同樣遵循了實現高可用性、高可靠性的思路:

在master程序中,通常第三方模組是不會加入功能**的。雖然nginx允許第三方模組在master程序中新增獨有的、自定義的一些方法,但是通常沒有第三方模組會這麼做。

Nginx學習筆記5 (極客時間 陶輝)

轉意字元 取消原字元的特殊含義 分組與取值 驗證正規表示式工具 pcretest server name指令 指令可以跟多個網域名稱,第乙個是主網域名稱。泛網域名稱 僅支援在最前或者最後 例如 server name lxn.com 正規表示式 加 字首 server name www.lxn.co...

極客時間的專欄

丁奇老師帶我們去學習mysql的45講,有mysql的完整學習路徑,資料庫是程式設計界必備基礎,還是比較推薦的。這是我買的第一篇專欄,老師帶我們去深入剖析tomcat和jetty,雖然不是特別新的技術,但是市場很成熟了,tomcat內部的 還是很值的我們去學習的。這是極客時間上訂閱最多的一篇專欄,已...

極客時間 演算法

1.合格程式設計師的第一步 演算法和資料結構 2.如何事半功倍的學習演算法和資料結構 1 怎樣去學習精通乙個領域?a.chunk it up 切碎知識點 同事注意各個知識點的聯絡,輔助記憶 b.deliberate practicing 刻意練習 c.feedback 和別人的做飯比較,高手指點 2...