nginx的多進程模型

nginx的多進程模型

nginx也支持多線程模型,但是多進程模型有更多的優勢,默認是多進程模型

nginx在啓動後會有一個master進程和多個worker進程。master進程主要用來管理worker,包含接受來自外界的信號,向個worker進程發送信號,監控worker進程的運行狀態,當worker進程退出後,會自動重新啓動新的worker進程。而基本的網絡事件,則是在worker進程中來處理了,比如accept()。多個worker進程直接是對等的,他們同等競爭來自客戶端的請求,各進程之間是獨立的。一個請求,只可能在一個worker進程中處理,一個worker進程,不可能處理其他worker進程的請求。worker進程的個數是可以設置的,一般設置與機器cpu核數一致,這裏面的原因與nginx的進程模型以及時間處理模型是分不開的。

nginx多進程模型的好處

1.對於每個worker進程來說,獨立的進程不需要枷鎖,省掉了鎖帶來的開銷,同時在編程以及問題查找時,也會方便很多。

2.採用獨立的進程,可以讓互相之間不會影響,一個進程退出後,其他進程還在工作,服務不會中斷,master進程則會很快啓動新的worker進程。

3.如果worker進程的異常退出,肯定是程序有bug了,異常退出會導致當前worker上的所有請求失敗,不過不會影響到所有請求,所以降低了風險。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章