Nginx 是一個高效能的 Web 伺服器,能夠同時處理大量的並發請求。它結合多進程機制和非同步機制 ,非同步機制使用的是非同步非阻塞方式 。
(推薦教學:nginx教學)
以下為大家介紹 Nginx 的多執行緒機制和非同步非阻塞機制 。
1、多進程機制
伺服器每當收到一個客戶端時,就會有 伺服器主程序 ( master process )產生一個 子程序( worker process )出來和客戶端建立連接進行交互,直到連接斷開,該子進程就結束了。
使用進程的好處是各個進程之間相互獨立,不需要加鎖,減少了使用鎖對效能造成的影響,同時降低了程式設計的複雜度和開發成本。
其次,採用獨立的進程,可以讓進程互相之間不會影響 ,如果一個進程發生異常退出時,其它進程正常工作, master 進程則很快啟動新的worker 進程,確保服務不會中斷,從而將風險降到最低。
缺點:
作業系統產生一個子程序需要進行 記憶體複製等操作,在資源和時間上會產生一定的開銷。當有大量請求時,會導致系統效能下降 。
2、非同步非阻塞機制
每個工作程序 使用 非同步非阻塞方式 ,可以處理多個客戶端請求 。
當某個 工作流程 接收到客戶端的請求以後,呼叫IO 進行處理,如果無法立即得到結果,就去 處理其他請求 (即為 非阻塞 );而 客戶端 在此期間也 無需等待回應 ,可以去處理其他事情(即為 異步 )。
當 IO 回傳時,就會通知此 工作程序 ;該程序已通知,暫時 掛起 目前處理的交易去 回應客戶端請求 。
以上是Nginx是如何處理HTTP請求的的詳細內容。更多資訊請關注PHP中文網其他相關文章!