首頁 > 運維 > Nginx > nginx使用多進程有啥好處

nginx使用多進程有啥好處

(*-*)浩
發布: 2019-12-31 14:57:59
原創
4013 人瀏覽過

nginx使用多進程有啥好處

nginx採用多進程模型好處

首先,對於每個worker進程來說,獨立的進程,不需要加鎖,所以省掉了鎖帶來的開銷,同時在程式設計以及問題查找時,也會方便很多。 ( 推薦學習:nginx使用 )

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

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

nginx多進程事件模型:非同步非阻塞

雖然nginx採用多worker的方式來處理請求,每個worker裡面只有一個主線程,但是nginx採用了非同步非阻塞的方式來處理請求,也就是說,nginx是可​​以同時處理成千上萬個請求的。

一個worker進程可以同時處理的請求數只受限於記憶體大小,而且在架構設計上,不同的worker進程之間處理並發請求時幾乎沒有同步鎖的限制,worker進程通常不會進入睡眠狀態。

因此,當Nginx上的進程數與CPU核心數相等時(最好每一個worker進程都綁定特定的CPU核心),進程間切換的代價是最小的。

而apache的常用工作方式(apache也有非同步非阻塞版本,但因其與自帶某些模組衝突,所以不常用),每個程序在一個時刻只處理一個請求。

因此,當並發數上到幾千時,就同時有幾千的進程在處理請求了。這對作業系統來說,是個不小的挑戰,進程帶來的記憶體佔用非常大,進程的上下文切換帶來的cpu開銷很大,自然效能就上不去了,而這些開銷完全是沒有意義的。

以上是nginx使用多進程有啥好處的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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