我想了解是什麼讓Nginx如此之快,並且我有幾個問題。nginx:它的多線程,但使用多個進程?
據我瞭解,無論是阿帕奇產生一個新的進程來服務於每個請求或產生一個新的線程來滿足每個請求。由於每個新線程共享虛擬地址空間,因此如果有多個併發請求進來,則內存使用量會持續增長。
Nginx通過只有一個監聽進程(主服務器)和單個執行線程AND 2或3 (編號是可配置的)工作進程。這個主進程/線程正在運行一個事件循環。有效等待任何傳入的請求。當請求進入時,它將請求發送給其中一個工作進程。
請糾正我,如果我的上述認識是不正確
如果上面的是正確的,那麼我有幾個問題:
1)是不是工作進程會產生多個線程,會遇到與Apache相同的問題?
2)或者是nginx的快,因爲它的基礎架構的情況下使用非阻塞-IO骨子裏。也許工作進程產生線程,只有非阻塞IO,是嗎?
3)什麼「究竟」是「基於事件的架構」,可真有人把它簡化,對於像我soemone理解。它是否僅適用於非阻塞io或其他內容?
我的c10k參考,我想通過它,但我不認爲其對基於事件的牌坊。它似乎更多的非阻塞IO。
非阻塞IO需要基於事件的體系結構。 – 2011-01-21 23:08:34
僅供參考 - 以防萬一你有興趣深入挖掘 - 我已經在此回答了其他材料+視頻的答案:http://planetunknown.blogspot.com/2011/02/why-nginx-is-faster- than-apache.html – PlanetUnknown 2013-10-02 14:18:06