Nginx 程序管理,你需要了解哪些?

2021-10-01 03:49:33 字數 1324 閱讀 1581

nginx 是乙個多程序的程式,多程序之間進行通訊可以使用共享記憶體、訊號等。當做程序間管理的時候,通常只使用訊號。

今天就來看一下 nginx 程序管理中的訊號是怎樣使用的。

從上圖可以看出,能夠傳送和處理訊號的有 master 程序、worker 程序、nginx 命令列。

首先讓我們來看下 master 程序。

因為 master 程序會啟動 worker 程序,所以它管理 worker 程序的方式首先是監控 worker 程序有沒有傳送 chld 訊號,因為 linux 作業系統中規定當子程序終止的時候會向父程序傳送 chld 訊號,所以如果 worker 程序由於一些模組** bug 導致 worker 程序意外終止,那麼 master 程序可以立刻通過 chld 發現這樣乙個事件,然後重新把 worker 程序拉起。

master 程序還會通過接受一些訊號,來管理 worker 程序。

master 程序可以接受的訊號有:

其中,粉色的訊號 usr2 和 winch 只能通過 linux 的 kill 命令列傳送訊號,也就是說我們需要先找到 master 程序所在的 pid,對這個 pid 傳送 usr2 或者 winch,而其他的 4 個有對應的 nginx 命令的。

通常是不直接對 worker 程序傳送訊號的,因為我們希望由 master 程序來管理 worker 程序。雖然直接對 worker 程序傳送訊號,也會讓 worker 程序產生同樣的結果,但是通常不這樣做,往往是由 master 程序管理,master 程序收到訊號後,會再把訊號傳送給 worker 程序。

nginx 在啟動以後,nginx會把他的 pid 放到乙個檔案中。預設是記錄在 nginx安裝目錄的 /logs/nginx.pid 檔案中,記錄了 nginx 的 master 程序的 pid。

當我們再次使用 nginx -s 這樣的命令列的時候,那麼 nginx 的工具命令列就會去讀取pid檔案中的 master 程序的 pid,向這個 pid 傳送同樣的 hup、usr1、term、quit 這樣的訊號,而這樣的命令對應著命令 reload、reopen、stop、quit,所以呼叫 nginx 命令列和直接用 kill 傳送訊號的效果是一樣的。

這篇文章主要介紹了 nginx 程序管理中訊號的使用,主要涉及到 master 程序、worker 程序和 nginx 命令列。我們可能會看到網路上有很多管理日誌檔案或者管理熱公升級的指令碼,這些指令碼中有時候是用 kill 直接傳送訊號,有時候是呼叫 nginx -s 這樣乙個命令列,很多人之前可能還會很困惑,那麼我相信大家現在應該很了解這樣乙個過程怎樣發生的了。

關於Python異常處理,你需要了解的知識點

當python檢測到乙個錯誤時,直譯器就無法繼續執行了,並且給出乙個錯誤提示。比如寫入檔案的時候,磁碟滿了,寫不進去了,或者從網路抓取資料,網路突然中斷。這時候,就需要捕獲處理它,否則程式會終止執行。使用try except finally語句進行捕獲操作,並告訴python發生異常時如何處理。首先...

android中自定義view需要了解哪些內容

這篇文章主要是對自己看過的自定義view的一些知識進行一些彙總,不會對一些api的細節進行講解,所以篇幅不會太長,主要是幫助大家對自定義view進行了解,以及學習自定義view需要從哪些地方入手。1 現有的view滿足不了我們的需求,介面的一些元素需要我們自己去繪製。2 現有的view可以滿足我們的...

雲管理 您需要了解的內容

關於雲服務,許多組織都在進行多重思考 部署多種雲產品來滿足各種業務需求。無論是針對軟體即服務 saas 平台即服務 paas 還是基礎架構即服務 iaas 產品,這種多雲策略都是正確的,並且也帶來了一些挑戰為組織著手進行數位化轉型提供了機會。了解2019年雲計算的關鍵趨勢 idg研究 雲的狀態 企業...