事件模块(Events Module)
·摘要
Nginx处理连接的方式
·指令
accept_mutex
语法:accept_mutex [ on | off ]
默认值:on
Nginx使用连接互斥锁进行顺序的accept()系统调用
accept_mutex_delay
语法:accept_mutex_delay Nms;
默认值:500ms
如果一个进程没有互斥锁,它将至少在这个值的时间后被回收,默认是500ms
debug_connection
语法:debug_connection [ip | CIDR]
默认值:none
0.3.54版本后,这个参数支持CIDR地址池格式。
这个参数可以指定只记录由某个IP产生的debug信息。
当然你也可以指定多个参数。
error_log /var/log/nginx/errors;
events {
debug_connection 192.168.1.1;
}
devpoll_changes
devpoll_events
kqueue_changes
kqueue_events
epoll_events
语法:devpoll_changes
默认值:
这些参数指定了按照规定方式传递/来自内核的事件数,默认devpoll的值为32,其余为512。
multi_accept
语法:multi_accept [ on | off ]
默认值:off
multi_accept在Nginx接到一个新连接通知后调用accept()来接受尽量多的连接
rtsig_signo
语法:rtsig_signo
默认值:
Nginx在rtsig模式启用后使用两个信号,该指令指定第一个信号编号,第二个信号编号为第一个加1
默认rtsig_signo的值为SIGRTMIN+10 (40)。
rtsig_overflow_events
rtsig_overflow_test
rtsig_overflow_threshold
语法:rtsig_overflow_*
默认值:
这些参数指定如何处理rtsig队列溢出。当溢出发生在nginx清空rtsig队列时,它们将连续调用poll()和 rtsig.poll()来处理未完成的事件,直到rtsig被排空以防止新的溢出,当溢出处理完毕,nginx再次启用rtsig模式。
rtsig_overflow_events specifies指定经过poll()的事件数,默认为16
rtsig_overflow_test指定poll()处理多少事件后nginx将排空rtsig队列,默认值为32
rtsig_overflow_threshold只能运行在Linux 2.4.x内核下,在排空rtsig队列前nginx检查内核以确定队列时怎样被填满的,默认值为1/10,“rtsig_overflow_threshold 3”意为1/3。
use
语法:use [ kqueue | rtsig | epoll | /dev/poll | select | poll | eventport ]
默认值:
如果你在./configure的时候指定了不止一个事件模型,你可以通过这个参数告诉nginx你想使用哪一个事件模型,默认情况下nginx在编译时会检查最适合你系统的事件模型。
你可以在这里看到所有可用的事件模型并且如果在./configure时激活它们。
worker_connections
语法:worker_connections
默认值:
worker_connections和worker_proceses(见主模块)允许你计算理论最大连接数:
最大连接数 = worker_processes * worker_connections
在反向代理环境下:
最大连接数 = worker_processes * worker_connections/4
由于浏览器默认打开2个连接到服务器,nginx使用来自相同地址池的fds(文件描述符)与前后端相连接
·参考文档