Nginx 執行管理篇

2021-09-11 17:21:00 字數 3068 閱讀 4037

盜於 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,所以我們都說埠是65535

worker_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 在多級層...