nginx events 事件模組

2021-09-19 12:46:27 字數 1867 閱讀 4036

中文文件位址

官方文件位址 

建議兩個文件個都看看防止遺漏中文文件不全

事件模組指令,重點看看:use和worker_connections

worker_processes 一般設定成cpu數

worker_connections 設定成作業系統能開啟檔案的檔案數理論值,一般設定成1萬左右即可

worker_processes :通常配置成cpu的總核數,或者其2倍,效能會更好。這可以 減少程序間切換帶來的消耗。

還可以同時使用worker_cpu_affinity來繫結cpu,使得每個worker程序獨享乙個 cpu,實現完全的併發,效能更好,不過這個只對linux系統有效。

events裡面的事件模型,linux推薦使用epoll模型,freebsd推薦採用kqueue n worker_rlimit_nofile:描述乙個nginx程序開啟的最多的檔案數目。配置成跟 linux核心下檔案開啟數一致就可以了。

可以通過ulimit -n 來檢視,新裝的系 統預設是1024

centos中可以如下方式進行修改:

在/etc/security/limits.conf最後增加:

* soft nofile 65535

* hard nofile 65535

* soft nproc 65535

* hard nproc 65535

worker_connections:每個程序允許的最多連線數,預設是1024,可以設定大一些。 理論上併發總數是worker_processes和worker_connections的乘積, worker_connections值的設定跟物理記憶體大小有關,因為系統可以開啟的最大檔案數和內 存大小成正比,一般1gb記憶體的機器上可以開啟的檔案數大約是10萬左右,所以, worker_connections 的值需根據 worker_processes 程序數目和系統可以開啟的最大檔案 總數進行適當地進行設定。

nginx支援使用下列的方式處理連線,這些方式可以通過use指令指定。

·select - 標準方式,如果當前平台沒有其他有效的方式,則會預設編譯。你可以使用--with-select_module和--without-select_module編譯引數來啟用或禁止該模組。

·poll - 標準方式,如果當前平台沒有其他有效的方式,則會預設編譯。你可以使用--with-poll_module和--without-poll_module編譯引數來啟用或禁止該模組。

·kqueue - 高效方式,適用於freebsd 4.1+, openbsd 2.9+, netbsd 2.0和macos x。執行於多處理器的macos x使用kqueue可能引起某些問題。

·epoll - 高效方式,適用於linux 2.6+。在某些平台,例如suse 8.2,它們有一些關聯包使2.4版本核心就能夠支援epoll。

·rtsig - 可執行的實時訊號,執行於linux 2.2.19+。預設情況下系統整體無法有超過1024個posix實時(佇列的)訊號,顯然這對於高負載伺服器是不夠用的,因此可以通過核心引數/proc/sys/kernel/rtsig-max增加這個佇列大小,然而,linux 2.6.6-mm2以後,這個引數不再可用,並且每個處理器都是乙個單獨的訊號佇列,其大小通過rlimit_sigpending指定,當佇列溢位時,nginx將丟棄它們並且使用poll方式處理連線直到他們恢復正常。

·/dev/poll - 高效方式,適用於solaris 7 11/99+, hp/ux 11.22+ (eventport), irix 6.5.15+和tru64 unix 5.1a+。

·eventport - 高效方式,適用於solaris 10,為了不引起核心錯誤

Nginx events塊的相關指令

用來設定nginx網路連線序列化 語法accept mutex on off 預設值accept mutex on 位置events 這個配置主要可以用來解決常說的 驚群 問題。大致意思是在某乙個時刻,客戶端發來乙個請求連線,nginx後台是以多程序的工作模式,也就是說有多個worker程序會被同時...

Nginx事件模組

這是事件模組都必須實現的介面。typedef struct ngx event module t typedef struct ngx event actions t typedef struct ngx event s ngx event t struct ngx event s 其中的最核心的是...

node 事件模組

nodejs中核心的api都是採用非同步事件驅動架構 fs http 所有能觸發事件的物件都是eventemitter類的例項,這句話很重要。事件的流程 引入模組 建立eventemitter物件 註冊事件 觸發事件。列子 1.引入模組 const eventemitter require even...