搜尋
首頁運維Nginxnginx為什麼比apache快

nginx為什麼比apache快

Jun 10, 2019 am 09:46 AM
apachenginx

nginx為什麼比apache快

nginx為什麼比apache快?

先總結的說幾個概念: 

1:nginx在高併發的情況下比apache快,低併發體現不明顯 

#2:快的原因得益於nginx的epoll模型 

#apache是​​多執行緒或多進程,在工作的時候,當來了一個http回應,一個行程接收(listen)–>識別處理—>返回請求,在此過程中,一個進程全部處理,apche 對於套接字的I/O,讀或者寫,但是讀或者寫都是阻塞的,阻塞意味著進程就得掛起進入sleep狀態,那麼一旦連線數很多,Apache必然要產生更多的進程來回應請求,一旦進程多了,CPU對於進程的切換就頻繁了,很耗資源和時間,所以就導致apache效能下降了,說穿了就是處理不過來這麼多進程了。

Nginx採用epoll模型,非同步非阻塞。對Nginx來說,把一個完整的連線請求處理都分成了一個事件,一個一個的事件。例如accept(), receive(),磁碟I/O,send()等,每部分都有對應的模組去處理,一個完整的請求可能是由幾百個模組去處理。真正核心的就是事件收集和分發模組,這就是管理所有模組的核心。

只有核心模組的調度才能讓對應的模組佔用CPU資源,從而處理請求。拿一個HTTP請求來說,首先在事件收集分發模組註冊感興趣的監聽事件,註冊好之後不阻塞直接返回,接下來就不需要再管了,等待有連接來了內核會通知你(epoll的輪詢會告訴進程),cpu就可以處理其他事情去了。

一旦有請求來,那麼對整個請求分配相應的上下文(其實已經預先分配好),這時候再註冊新的感興趣的事件(read函數),同樣客戶端數據來了內核會自動通知進程可以去讀資料了,讀了資料之後就是解析,解析完後去磁碟找資源(I/O),一旦I/O完成會通知進程,進程開始給客戶端發回資料send(),這時候也不是阻塞的,呼叫後就等內核發回通知發送的結果就行。

整個下來把一個請求分成了很多個階段,每個階段都到很多模組去註冊,然後處理,都是非同步非阻塞。非同步這裡指的就是做一個事情,不需要等待返回結果,做好了會自動通知你。

在網路上找到了一個例子: 

可以舉一個簡單的例子來說明Apache的工作流程,我們可以平常去餐廳吃飯。餐廳的工作模式是一個服務員全程服務客戶,流程是這樣,服務員在門口等候客人(listen),客人到了就接待安排的餐桌上(accept),等著客戶點菜(request uri),去廚房叫師傅下單做菜(磁碟I/O),等待廚房做好(read),然後給客人上菜(send),整個下來服務員(進程)很多地方是阻塞的。

這樣客人一多(HTTP請求一多),餐廳只能透過叫更多的服務員來服務(fork進程),但是由於餐廳資源是有限的(CPU),一旦服務員太多管理成本很高(CPU上下文切換),這樣就進入一個瓶頸。 

再來看看Nginx得怎麼處理?餐廳門口掛個門鈴(註冊epoll模型的listen),一旦有客人(HTTP請求)到達,派一個服務員去接待(accept),之後服務員就去忙其他事情了(比如再去接待客人),等這位客人點好餐就叫服務員(數據到了read()),服務員過來拿走菜單到廚房(磁碟I/O),服務員又做其他事情去了,等廚房做好了菜也喊服務員(磁碟I/ O結束),服務生再幫客人上菜(send()),廚房做好一個菜就給客人上一個,中間服務生可以去幹其他事情。

整個過程被切分成很多個階段,每個階段都有對應的服務模組。我們想想,這樣一旦客人多了,餐廳也能招待更多的人。

更多Nginx技術文章,請造訪Nginx使用教學專欄!

以上是nginx為什麼比apache快的詳細內容。更多資訊請關注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

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

熱門文章

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用