事件模块可以使用指令来配置网络机制,某些参数可能会直接应用程序性能,下面是事件模块可配置的指令
events block
user nginx nginx;
master_process on;
worker_processes 4;
events {
worker_connections 1024;
use epoll;
}
[...]
accept_mutex
Accepted values:
on or off
Syntax:
accept_mutex on;
Default value:
on
开启或者禁用使用互斥锁来打开sockets
互斥锁,是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制
accept_mutex_delay
Syntax:
Numeric (time)
Example:
accept_mutex_delay 500ms;
Default value:
500 milliseconds
定义worker进程等待多长时间再次获取资源
connections
已改为worker_connections
debug_connection
Syntax:
IP address or CIDR block.
Example:
debug_connection 172.63.155.21;
Default value:
None
为匹配的IP客户端写入详细的日志,这些错误信息将会存储error_log
日志文件中,并且需要error_log
指令的值debug级别
注意:如果要使用这个特性必须在编译Nginx时加入--debug参数
multi_accept
Syntax:
on or off
Example:
multi_accept off;
Default value:
off
定义Nginx是否一次同意从监听队列所有到来的连接
use
Accepted values:
/dev/poll, epoll, eventport, kqueue,rtsig, or select
Example:
use kqueue;
Default value:
Defined at compile time
选择一个可用的事件的模型(可以在编译时指定),Nginx会自动选择事件的模型
支持下面的事件模型:
- select:只能在Windows下使用,这个事件模型不建议在高负载的系统使用
- poll:Nginx默认首选,但不是在所有系统下都可用
- kqueue:这种方式在FreeBSD 4.1+, OpenBSD2.9+, NetBSD 2.0, 和 MacOS X系统中是最高效的
- epoll: 这种方式是在Linux 2.6+内核中最高效的方式
- rtsig:实时信号,可用在Linux 2.2.19的内核中,但不适用在高流量的系统中
- /dev/poll: Solaris 7 11/99+,HP/UX 11.22+, IRIX 6.5.15+, and Tru64 UNIX 5.1A+操作系统最高效的方式
- eventport: Solaris 10最高效的方式
worker_connections
Syntax:
Numeric
Example:
worker_connections 1024;
Default value:
None
定义每个worker进程连接数量