這篇主要是閱讀這篇博文的筆記。、
nginx採用的也是大部分http伺服器的做法,master,worker模型,基本的事件處理都是放在worker中,master負責一些全域性初始化,以及對worker的管理。
nginx中的master和worker之間是通過socketpair來實現的,每次fork完乙個子程序之後,將這個子程序的socketpair控制代碼傳遞給前面已經存在的子程序,這樣子程序之間也就可以通訊了。
nginx維護了乙個ngx_processes陣列用來存放所有的程序資訊。fork主要是在ngx_spawn_process函式中進行的:主要包含三部分:1.尋找子程序的陣列下標slot,2.建立socketpair並設定相關屬性,3.在子程序中執行傳遞進來的函式。
子程序的管道可讀事件捕捉函式是ngx_channel_handler(ngx_event_t *ev),在這個函式中,會讀取message並解析。
在nginx中,worker和master的互動是通過流管道和訊號,而master與外部的互動通過訊號來進行。
master主迴圈之前,父子程序的訊號處理函式相同,通過設定相應的標誌變數,從而在主迴圈中,判斷這些變數,做出相應的操作。
master主迴圈中除了sigsuspend(&set)這幾句外,都是用if條件執行的**。
worker主迴圈中主要是ngx_process_events_and_timers(cycle);這句,其它的也都是條件執行。
Nginx程序模型
目錄 1.nginx管理 工作程序模式 2.驚群 問題 為了支援現在流行的多cpu和多核架構,nginx使用了管理程序和工作程序的設計。架構設計如下圖所示 管理程序為工作程序的父程序,負責外部指令的接收,工作程序的狀態監管,負載均衡等 工作程序負責客戶端請求的處理和響應,工作程序一般是按照cpu的核...
Nginx筆記 程序模型
nginx是乙個效能非常強的高併發處理伺服器,他可以支援百萬級併發的需求 當nginx啟動時候,master在80埠監聽,他的作用僅僅是監聽,與客戶端連線的是worker,例如現在在nginx.conf裡配置worker processes 3,那麼master就會fork三個worker程序用於處...
002 nginx的程序模型
一 概述 nginx的高效能是大家所了解的,nginx之所以擁有這麼好的效能和它的程序模型是分不開的.當nginx啟動的時候,它會以後臺程序的方式進行,然後nginx會啟動乙個master程序和多個worker程序.也就是說,nginx是採用多程序的方式程序的.現在我們需要了解一下master程序和...