nginx的工作原理和工作模式


一、nginx的工作原理
1.nginx采用了異步非阻塞的工作方式
epoll模型:當有i/o事件產生時,epoll就會告訴進程哪個連接由i/o事件產生,然后進程就會處理這個事件。

nginx配置use epoll后,以異步非阻塞的方式工作,能夠處理百萬計的並發連接

2.處理過程:
每進來一個請求,會有一個工作進程去處理,但不是全程進行處理,處理可以會發生阻塞的情況;

比如:向后端服務器轉發請求,那么這個處理的工作進程不會一直等待,它會在發送完請求后,注冊一個事件等待后端服務器返回;
此時,再有新的請求,這個worker就很快再按這種方式處理;
而一旦后端服務器返回信息,就會觸發這個事件,worker就會進行處理,這個請求才會接着往下走;

通過這種<快速處理並快速釋放請求>的方式,達到同樣的配置可以處理更大並發的目的

二、nginx的工作模式
1.master-worker模式
nginx啟動成功后,會有一個master進程和至少一個worker進程;
master進程負責處理系統信號、加載配置、管理worker進程

worker進程負責處理具體的業務邏輯

對外部來說,真正提供服務的時worker進程

優點:
穩定性高;一個worker進程掛掉后master進程會立即啟動一個新的worker進程,保證worker進程數量不變,降低服務中斷的概率;
配合Linux的cpu親和性的匹配中,可以充分利用多核cpu的優勢,提升性能;
處理信號、配置重新加載等可以做到盡可能不中斷服務;

2.單進程模式
nginx只有一個進程,nginx的所有工作都由這個進程負責

優點:可以很方便的利用gdb工具進行調試

缺點:
不支持平滑升級
任何的信號處理都可以造成服務的中斷
進程掛掉后,在沒有外部監控的情況下,無法重啟服務
生產環境中不會使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM