事件模块可以使用指令来配置网络机制,某些参数可能会直接应用程序性能,下面是事件模块可配置的指令

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进程连接数量