Nginx服務介紹

1、nginx 介紹在這裏插入圖片描述

Nginx (engine x) 是一個高性能的 HTTP 和 反向代理 服務,也是一個IMAP/POP3/SMTP服務。因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特點是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好

在高連接併發的情況下,Nginx是Apache服務器不錯的替代品。

創始人伊戈爾·賽索耶夫
在這裏插入圖片描述

2、爲什麼選擇 nginx

Nginx 是一個高性能的 Web 和反向代理服務器, 它具有有很多非常優越的特性:

單機環境下參考服務器配置。 併發連接數在7000+ -8000左右。 集羣模式20000+

作爲 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的併發連接,體現更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎。能夠支持高達 50,000 個併發連接數的響應。

作爲負載均衡服務器:Nginx 既可以在內部直接支持 Rails 和 PHP,也可以支持作爲 HTTP代理服務器 對外進行服務。Nginx 用 C 編寫, 不論是系統資源開銷還是 CPU 使用效率都比 Perlbal 要好的多。

作爲郵件代理服務器: Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作爲郵件代理服務器),Last.fm 描述了成功並且美妙的使用經驗。

Nginx 安裝非常的簡單,配置文件 非常簡潔(還能夠支持perl語法),Bugs非常少的服務器: Nginx 啓動特別容易,並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啓動。你還能夠在 不間斷服務的情況下進行軟件版本的升級。

3、IO多路複用

1、I/O multiplexing【多併發】

第一種方法就是最傳統的多進程併發模型 (每進來一個新的I/O流會分配一個新的進程管理。)
在這裏插入圖片描述
第二種方法就是I/O多路複用 (單個線程,通過記錄跟蹤每個I/O流(sock)的狀態,來同時管理多個I/O流 。)

I/O multiplexing 這裏面的 multiplexing 指的其實是在單個線程通過記錄跟蹤每一個Sock(I/O流)的狀態來同

時管理多個I/O流。發明它的原因,是儘量多的提高服務器的吞吐能力。

在同一個線程裏面, 通過撥開關的方式,來同時傳輸多個I/O流。
在這裏插入圖片描述

2、一個請求到來了,nginx使用epoll接收請求的過程是怎樣的?

ngnix會有很多連接進來, epoll會把他們都監視起來,然後像撥開關一樣,誰有數據就撥向誰,然後調用相

應的代碼處理。

  • epoll.

epoll 可以說是I/O 多路複用最新的一個實現,epoll 修復了poll 和select絕大部分問題, 比如:

• epoll 線程是安全的。

• epoll 告訴你具體哪個sock有數據,你不用自己去找了。

3、異步,非阻塞
$ pstree |grep nginx
 |-+= 81666 root nginx: master process nginx
 | |--- 82500 nobody nginx: worker process
 | \--- 82501 nobody nginx: worker process

1個master進程,2個work進程

每進來一個request,會有一個worker進程去處理。但不是全程的處理,處理到什麼程度呢?處理到可能發生阻塞的地方,比如向上遊(後端)服務器轉發request,並等待請求返回。那麼,這個處理的worker不會這麼一直等着,他會在發送完請求後,註冊一個事件:“如果upstream返回了,告訴我一聲,我再接着幹”。於是他就休息去了。這就是異步。此時,如果再有request 進來,他就可以很快再按這種方式處理。這就是非阻塞和IO多路複用。而一旦上游服務器返回了,就會觸發這個事件,worker纔會來接手,這個request纔會接着往下走。這就是異步回調。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章