首頁 > 後端開發 > php教程 > [讀書筆記]初探nginx架構 1_進程模型

[讀書筆記]初探nginx架構 1_進程模型

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-07-29 09:04:56
原創
1212 人瀏覽過

原文:http://tengine.taobao.org/book/chapter_02.html%20ngx

[读书笔记]初探nginx架构 1_进程模型
nginx啟動後進程後台包含一個master進程與多個worker進程。
(終端nginx指令與master交互)

master程序用來管理worker進程包含

  • 接收來自外界的訊號
  • 向各worker進程發送訊號
  • 監控worker進程的執行狀態
  • 進程退出後(當worker異常情況下),會自動重新啟動新的worker進程
基本的網路事件放在worker進程中來處理。多個worker進程之間是對等的,他們同等競爭來自客戶端的請求,各進程相互之間是獨立的。一個請求,只可能在一個worker進程中處理,一個worker進程,不可能處理其它進程的請求。

處理流程

    每個worker進程都是從master進程fork過來,在master進程裡面,先建立好需要listen的socket(listenfd)之後,然後再fork出多個worker進程
  1. 所有worker進程的listenfd會在新連接到來時變得可讀,為確保只有一個進程處理該連接,所有worker進程在註冊listenfd讀取事件前搶accept_mutex
  2. 搶到互斥鎖的那個進程註冊listenfd閱讀事件,在讀事件裡讀事件呼叫accept接受該連接當一個worker進程在accept這個連接之後,就開始讀取請求,解析請求,處理請求,產生資料後,再返回給客戶端,最後才斷開連接
該進程模型好處

    對於每個worker進程來說,獨立的進程,不需要加鎖,所以省掉了鎖帶來的開銷
  • 在編程以及問題查找時,也會方便很多
  • 採用獨立的進程,可以讓彼此之間不會影響,一個行程退出後,其它行程還在工作,服務不會中斷,master程序則很快啟動新的worker程序
').addClass('pre-numbering').hide( ); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); }); 以上就介紹了[閱讀筆記]初探nginx架構 1_進程模型,包含了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板