Nginx實現高並發及原理


1.1nginx基本介紹

1.nginx高並發原理(多進程+epool實現高並發)

1.Nginx 在啟動后,會有一個 master 進程和多個相互獨立的 worker 進程

2.每個子進程只有一個線程,采用的 IO多路復用模型epoll,實現高並發

2.epoll能實現高並發原理

1.epoll() 中內核則維護一個鏈表,epoll_wait 方法可以獲取到鏈表長度,不為0就知道文件描述符准備好了

2.在內核實現中 epoll 是根據每個 sockfd 上面的與設備驅動程序建立起來的回調函數實現的

3.某個 sockfd 上的事件發生時,與它對應的回調函數就會被調用,來把這個 sockfd 加入鏈表,其他處於“空閑的”狀態的則不會

4.epoll上面鏈表中獲取文件描述,這里使用內存映射(mmap)技術, 避免了復制大量文件描述符帶來的開銷

內存映射(mmap):內存映射文件,是由一個文件到一塊內存的映射,將不必再對文件執行I/O操作

3、nginx和apache比較

(1)nginx相對於apache的優點

1.輕量級,同樣起web 服務,比apache 占用更少的內存及資源

2.抗並發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高並發下nginx 能保持低資源低消耗高性能

3.高度模塊化的設計,編寫模塊相對簡單,社區活躍,各種高性能模塊出品迅速啊

(1)apache相對於nginx的優點

1.apache 更為成熟,少 bug ,穩定性好

2.rewrite ,比nginx 的rewrite 強大

3.模塊超多,基本想到的都可以找到


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM