nginx events 事件模塊

中文文檔地址http://www.nginx.cn/doc/core/events.html

官方文檔地址 http://nginx.org/en/docs/ngx_core_module.html#use

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

事件模塊指令,重點看看: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,爲了不引起內核錯誤

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