盜於 www.cnblogs.com/yum777/p/62…master負責管理worker程序, 具體woker程序數由 worker_processes 指令配置。
syntax: worker_processes number | auto;
default:
worker_processes 1;
context: main
複製**
預設 worker_processes 為1,也就是說最少兩個程序乙個master程序,乙個worker程序。但實際工作中往往會有乙個master程序管理多個woker程序。 配置 worker_processes 為auto,一般為系統的cpu核數的數量。
master程序主要用於讀取驗證配置資訊,監控、啟動、終止worker程序以及維護worker程序的個數等工作
worker主要用於接收,傳入並處理來自客戶端的連線
思考: 伺服器上不可能不存在其他服務, 也就是說程序切換是不可避免的. 為什麼 worker_process 的數字最好和cpu核數對等 往往能實現資源利用最大化。master程序接收的訊號:
訊號名含義
對應nginx命令列
term,int
終止程序
stop
quit
完成請求鏈結,優雅的終止程序
quit
hupreload
usr1
重新開啟日誌檔案,在切割日誌時用途較大
reopen
usr2
平滑公升級,熱部署使用
無winch
平滑關閉程序,熱部署使用
無 worker接收的訊號
訊號名含義
對應nginx命令列
term,int
終止程序
stop
quit
完成請求鏈結,優雅的終止程序
quit
winch
平滑關閉程序,熱部署使用
無 例子:
為了更加直觀,我們將nginx.conf worker程序改為1
worker_processes 1;
複製**
nginx -s reload
複製**
或者可以使用 kill -hup pid,pid需要你去檢視nginx master程序pid獲取. 此命令針對worker程序無效重新生成日誌檔案
nginx -s reopen
# kill -usr1 1144
複製**
停掉子程序kill -term 1376
複製**
我們發現master又重新啟動了乙個新的worker程序.
其餘大家可以自己嘗試、了解**級別原理目前不懂, 介紹一下簡單的自己理解吧
平滑重啟,先啟動兩個新配置的worker程序。 舊配置的worker程序繼續處理目前存在的任務,處理完後將會關閉。reload流程:
向master傳送hub訊號(reload命令)
master程序驗證配置檔案語法是否正確
master程序開啟新的監聽埠
master程序用新配置啟動新的worker子程序
master程序向向老worker程序傳送quit訊號
老worker程序關閉監聽控制代碼,處理完當前鏈結後結束程序
因為nginx是多程序結構,如果實現比如流量控制功能、openrestry的lua_shared_dict指令,都通過共享記憶體來進行通訊.
wget
複製**
src/core存放著主幹部分、基礎資料結構和基礎設施的原始碼,main函式在src/core/nginx.c中,這是分析原始碼的乙個很好的起點。
src/event存放著事件驅動模型和相關模組的原始碼。
src/http存放著http server和相關模組的原始碼。
src/mail存放著郵件**和相關模組的原始碼。
src/misc存放著c++相容性測試和google perftools模組的原始碼。
src/os存放著依賴於作業系統實現的原始碼,nginx啟動過程中最重要的master和workers建立**就在這個目錄下
我們著重觀察下 http proxy 模組
proxy 並不是乙個必要的模組,它藏在了 http 下面的 modules 目錄下.
檔名包含filter的表示起到的為過濾功能埠的限制,極限情況最多通過nginx建立當前連線數65536個
ip的埠是雙位元組,也就是256256-1, 256256對計算機來說就是0,因為此最大的埠號是65535而不是65536,當然埠數值是0-65535,數量是65536個,但0一般不用,故而我們通常都說65535,而且埠號最大也是65535,所以我們都說埠是65535worker_connections 指令
很多人會誤解worker_connections這個引數的意思,認為這個值就是nginx所能建立連線的最大值。其實不然,這個值是表示每個worker程序所能建立連線的最大值,所以,乙個nginx能建立的最大連線數,應該是worker_connections * worker_processes。當然,這裡說的是最大連線數,對於http請求本地資源來說,能夠支援的最大併發數量是worker_connections * worker_processes,而如果是http作為反向**來說,最大併發數量應該是worker_connections * worker_processes/2。因為作為反向**伺服器,每個併發會建立與客戶端的連線和與後端服務的連線,會占用兩個連線。
製造執行管理系統MES
什麼是mes 製造執行管理系統 mes 是企業cims資訊整合的紐帶,是實施企業敏捷製造戰略和實現車間生產敏捷化的基本技術手段。本文介紹了mes的概念 功能模型,以及mes與erp及現場自動化系統之間的關係,並且描述了mes系統的典型結構。概 述 製造業是我國國民經濟重要的支柱產業,在第二產業中佔據...
07ROS執行管理
ros是多程序 節點 的分布式框架,乙個完整的ros系統實現 可能包含多台主機 每台主機上又有多個工作空間 workspace 每個的工作空間中又包含多個功能包 package 每個功能包又包含多個節點 node 不同的節點都有自己的節點名稱 每個節點可能還會設定乙個或多個話題 topic 在多級層...
第 4 章 ROS執行管理
ros是多程序 節點 的分布式框架,乙個完整的ros系統實現 可能包含多台主機 每台主機上又有多個工作空間 workspace 每個的工作空間中又包含多個功能包 package 每個功能包又包含多個節點 node 不同的節點都有自己的節點名稱 每個節點可能還會設定乙個或多個話題 topic 在多級層...