搜尋
首頁運維Nginxnginx如何實現高並發

nginx如何實現高並發

Jun 04, 2019 pm 05:34 PM
nginx

簡單來講,就是非同步,非阻塞,使用了epoll和大量的底層程式碼最佳化。

稍微詳細一點展開的話,就是nginx的特殊行程模型和事件模型的設計。

nginx如何實現高並發

影片課程推薦→:《千萬級資料並發解決方案(理論實戰)》

進程模型

nginx採用一個master進程,多個woker進程的模式。

master流程主要負責收集、分發請求。當一個請求過來時,master拉起一個worker進程負責處理這個請求。

master進程也要負責監控woker的狀態,保證高可靠性

woker進程一般設定為跟cpu核心數一致。 nginx的woker進程跟apache不一樣。 apche的進程在同一時間只能處理一個請求,所以它會開很多進程,幾百甚至幾千個。而nginx的woker進程在同一時間可以處理額請求數只受記憶體限制,因此可以處理多個請求。

事件模型

nginx是非同步非阻塞的。

每進來一個request,就會有一個worker行程去處理。但不是全程的處理,處理到什麼程度呢?處理到可能發生阻塞的地方,例如向上游(後端)伺服器轉送request,並等待請求返回。那麼,這個處理的worker不會這麼傻等著,他會在發送完請求後,註冊一個事件:「如果upstream返回了,告訴我一聲,我再接著幹」。於是他就休息去了。此時,如果再有request 進來,他就可以很快再用這種方式處理。而一旦上游伺服器回傳了,就會觸發這個事件,worker才會來接手,這個request才會接著往下走。

web server的工作性質決定了每個request的大部份生命都是在網路傳輸中,實際上花費在server機器上的時間片不多。這是幾個進程就解決高並發的秘密所在。

IO多路復用模型epoll

epoll() ,核心維護一個鍊錶,epoll_wait 直接檢查鍊錶是不是空就知道是否有檔案描述子準備好了。核心實作epoll 是根據每個 sockfd 上面的與裝置驅動程式建立的 回呼函數 實現的。那麼,某個 sockfd 上的事件發生時,與它對應的回呼函數就會被調用,來把這個 sockfd 加入鍊錶,其他處於「空閒的」狀態的則不會。

select() ,核心採用 輪訓 的方法來查看是否有fd 準備好,其中的保存 sockfd 的是類似數組的資料結構 fd_set,key 為 fd,value 為 0 或 1。

poll()

【總結】:epoll 與 select 相比最大的優點是不會隨著 sockfd 數目成長而降低效率。

更多Nginx相關技術文章,請造訪Nginx使用教學欄位進行學習!

以上是nginx如何實現高並發的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
NGINX的優點:速度,效率和控制NGINX的優點:速度,效率和控制May 12, 2025 am 12:13 AM

NGINX受歡迎的原因是其在速度、效率和控制方面的優勢。 1)速度:採用異步、非阻塞處理,支持高並發連接,靜態文件服務能力強。 2)效率:內存使用低,負載均衡功能強大。 3)控制:通過靈活的配置文件管理行為,模塊化設計便於擴展。

NGINX與Apache:社區,支持和資源NGINX與Apache:社區,支持和資源May 11, 2025 am 12:19 AM

NGINX和Apache在社區、支持和資源方面的差異如下:1.NGINX的社區雖然規模較小,但活躍度和專業性高,官方支持通過NGINXPlus提供高級功能和專業服務。 2.Apache擁有龐大且活躍的社區,官方支持主要通過豐富的文檔和社區資源提供。

NGINX單元:應用程序服務器簡介NGINX單元:應用程序服務器簡介May 10, 2025 am 12:17 AM

NGINXUnit是一個開源的應用服務器,支持多種編程語言和框架,如Python、PHP、Java、Go等。 1.它支持動態配置,可以在不重啟服務器的情況下調整應用配置。 2.NGINXUnit支持多語言應用,簡化了多語言環境的管理。 3.通過配置文件,可以輕鬆部署和管理應用,如運行Python和PHP應用。 4.它還支持高級配置,如路由和負載均衡,幫助管理和擴展應用。

使用NGINX:優化網站性能和可靠性使用NGINX:優化網站性能和可靠性May 09, 2025 am 12:19 AM

NGINX可通过以下方式提升网站性能和可靠性:1.作为Web服务器处理静态内容;2.作为反向代理服务器转发请求;3.作为负载均衡器分配请求;4.作为缓存服务器减轻后端压力。通过配置优化如启用Gzip压缩和调整连接池,NGINX能显著提高网站性能。

NGINX的目的:服務Web內容等NGINX的目的:服務Web內容等May 08, 2025 am 12:07 AM

nginxserveswebcontentandactsasareverseproxy,loadBalancer和more.1)效率高效的servesstaticContentLikeHtmlandImages.2)itfunctionsasareverseproxybalancer,and andginxenhanceperforfforfforfforfforfforffrenfcaching.4)

NGINX單元:簡化應用程序部署NGINX單元:簡化應用程序部署May 07, 2025 am 12:08 AM

NGINXUnit通過動態配置和多語言支持簡化應用部署。 1)動態配置無需重啟服務器即可修改。 2)支持多種編程語言,如Python、PHP、Java。 3)採用異步非阻塞I/O模型,提升高並發處理性能。

NGINX的影響:Web服務器及其他NGINX的影響:Web服務器及其他May 06, 2025 am 12:05 AM

NGINX起初解決C10K問題,現已發展為處理負載均衡、反向代理和API網關的全能選手。 1)它以事件驅動和非阻塞架構聞名,適合高並發。 2)NGINX可作為HTTP和反向代理服務器,支持IMAP/POP3。3)其工作原理基於事件驅動和異步I/O模型,提升了性能。 4)基本用法包括配置虛擬主機和負載均衡,高級用法涉及復雜負載均衡和緩存策略。 5)常見錯誤包括配置語法錯誤和權限問題,調試技巧包括使用nginx-t命令和stub_status模塊。 6)性能優化建議包括調整worker參數、使用gzip壓縮和

NGINX故障排除:診斷和解決常見錯誤NGINX故障排除:診斷和解決常見錯誤May 05, 2025 am 12:09 AM

Nginx常見錯誤的診斷與解決方法包括:1.查看日誌文件,2.調整配置文件,3.優化性能。通過分析日誌、調整超時設置和優化緩存及負載均衡,可以有效解決404、502、504等錯誤,提高網站穩定性和性能。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具