事件模块的指令集主要是配置epoll、kqueue、select、poll等,这些指令控制nginx处理连接的方式,这些指令有:
1、accept_mutex
语法形式:accept_mutex [on|off]
默认值:on
nginx使用accept mutex保护accept()系统调用。accept mutex在不同的系统上会使用原子指令实现或者使用文件上锁实现。
2、accept_mutex_delay
语法形式:accept_mutex_delay Nms;
默认值:500ms
如果一个worker进程未拥有accept mutex,它至少延迟这么长时间之后再尝试抢夺。
3、debug_connection
语法形式:debug_connecton [ip|CIDR]
默认值:none
自从0.3.54这个选项支持CIDR地址格式,这个选项控制来自于该IP或者NET的客户端才写debug log。例如:
error_log /var/log/nginx/errors;
events {
debug_connection 192.168.1.1;
}
4、devpoll_changes
语法形式:devpoll_changes number
默认值:32
使用devpoll_changes方式,设置可以与内核之间传递事件的数量。
5、devpoll_events
语法形式:devpoll_events number
默认值:32
使用devpoll_events方式,设置可以与内核之间传递事件的数量。
6、kqueue_changes
语法形式:kquue_changes number
默认值:512
使用kequeue_changes方式,设置可以与内核之间传递事件的数量。
7、kqueue_events
语法形式:kquue_events number
默认值:512
使用kequeue_events方式,设置可以与内核之间传递事件的数量。
8、epoll_events
语法形式:epoll_events number
默认值:512
使用epoll_events方式,设置可以与内核之间传递事件的数量。
9、multi_accept
语法形式:multi_accept [on|off]
默认值:off
设置了该选项,当nginx收到新连接的通知,accept()会尝试返回尽量多的连接请求。
10、rtsig_signo
11、rtsig_overflow_events
12、rtsig_overflow_test
13、rtsig_overflow_threshold
这几个指令是使用信号驱动IO方式事件模型的配置项,在linux系统一般使用epoll,这里就不详细解释了。
14、use
语法形式:use [kqueue|rtsig|epoll|/dev/poll|select|poll|eventport]
默认值:
使用事件模型。一般在./configure脚本执行的时候nginx会根据当前操作系统情况选择合适的事件模型,如果你确定你的系统上有几种事件模型,可以使用这个指令更改事件模型。
15、worker_connections
语法形式:worker_connections number
默认值:
前面介绍过,可以计算出max_clients:
max_clients = worker_processes * worker_connections
不过在用作反向代理的时候,max_clients = worker_processes * worker_connections/4,这是因为此时浏览器默认会打开两条到server的连接,nginx又会使用两个文件描述字连接到后端服务。
至此,nginx的核心模块配置(core模块和event模块)就介绍完了,而nginx配置的灵活与强大体现在http模块的配置中,这一部分又可以分成二十多个不同的模块,go on.