Nginx系列一:Nginx介绍与Nginx工作原理分析
一:Nginx概述
Nginx ("engine x") 是一個高性能的輕量級的 HTTP 和反向代理、負載平衡web服務器。
nginx 的并發能力在同類型的網頁服務器中表現較好市場占用率很高,中國大陸使用 nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
Nginx以事件驅動的方式編寫(整個事件驅動機制基本框架就是linux下的select,poll,epoll這幾個IO多路復用模式),所以有非常好的性能,有報告表明能支持高達 50,000 個并發連接數。
Nginx因為它的穩定性高、豐富的模塊庫、靈活的配置和低系統資源的消耗而聞名。
業界一致認為它是Apache2.2+mod_proxy_balancer的輕量級代替者,不僅是因為響應靜態頁面的速度非常快,而且它的模塊數量達到Apache的近2/3。對proxy和rewrite模塊的支持很徹底,同時還支持 CGI 協議的動態語言,比如 perl、php等。但是不支持 java,Java 程序只能通過與 tomcat 配合完成。
?
二:Nginx基本特性與功能
?
- 靜態資源的web服務器,能緩存打開的文件描述符
- 支持緩存加速、負載均衡機制
- http、smtp、pop3協議的反向代理服務器;
- 模塊化的結構。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。
- 支持SSL 和 TLSSNI.
- 支持熱部署
Nginx具有很高的穩定性。其它HTTP服務器,當遇到訪問的峰值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啟服務器。例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術,使得它的CPU與內存占用率非常低。nginx官方表示保持10,000個沒有活動的連接,它只占2.5M內存,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言,nginx比lighthttpd更勝一籌。
Nginx支持熱部署。它的啟動特別容易, 并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟件版本進行進行升級。
Nginx采用master-slave模型,能夠充分利用SMP的優勢,且能夠減少工作進程在磁盤I/O的阻塞延遲。當采用select()/poll()調用時,還可以限制每個進程的連接數。
Nginx代碼質量非常高,代碼很規范,手法成熟, 模塊擴展也很容易。特別值得一提的是強大的Upstream與Filter鏈。Upstream為諸如reverse proxy,與其他服務器通信模塊的編寫奠定了很好的基礎。而Filter鏈最酷的部分就是各個filter不必等待前一個filter執行完畢。它可以把前一個filter的輸出做為當前filter的輸入,這有點像Unix的管線。這意味著,一個模塊可以開始壓縮從后端服務器發送過來的請求,且可以在模塊接收完后端服務器的整個請求之前把壓縮流轉向客戶端。
Nginx采用了一些os提供的最新特性如對sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,從而大大提高了性能。
?
三:Nginx工作原理分析
Nginx啟動后以daemon的方式在后臺運行,Nginx會啟動一個master進程和多個worker進程。
master進程主要用來管理worker進程,包含:接收來自外界的信號,向各worker進程發送信號,監控worker進程的運行狀態,當worker進程退出后(異常情況下),會自動重新啟動新的worker進程
那worker是如何工作的呢?
當master發出通知有新的任務了,空閑的worker通過爭搶的方式去獲取任務!
nginx設計一個 master 和多個 woker 有好處
總結
以上是生活随笔為你收集整理的Nginx系列一:Nginx介绍与Nginx工作原理分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在Win Server 2008R2
- 下一篇: Nginx - 原理机制