accept_mutex on | off
如果开启,worker进程将轮流接收新请求。否则,有新请求到来时,所有的worker进程将集体被唤醒,而此时如果请求流量较低,一些worker进程只会浪费系统资源。 参考: [http:///2013/08/24/281 ]
accept_mutex_delay time
启动accept_mutex
后,每个worker进程重新接受新请求的最大时间间隔。默认值 500ms
debug_connection
对指定的客户端请求启动debug模式。其它请求使用error_log
指令设置的日志级别。可以指定 IP/主机名/unix套接字。 这个指令的生效需要在编译时指定 —with-debug
1 events {
debug_connection 127.0.0.1;
debug_connection localhost;
debug_connection 192.0.2.0/24;
debug_connection ::1;
debug_connection 2001:0db8::/32;
debug_connection unix:;
...
}
debug_points abort | stop
当发生严重的内部错误,开启此选项会创建一个core-file(abort)或停止进程已便于后续分析。
lock_file file
nginx使用锁机制来实现accept_mutex
,并将访问串行化到共享内存。大部分系统的锁操作是原子的,这条指令会被忽略。另外一部分系统使用文件锁,这条指令指定了锁文件的前缀。默认值为 lock_file logs/nginx.lock
multi_accept on | off
关闭时一个worker进程每次接受一个请求。开启时,每接到一个请求,就尽可能的取走全部的请求。
pcre_jit on | off
开启/关闭正则表达式的”实时编译”。PCRE JIT可以显著提升处理正则表达式的速度。当使用PCRE源码库编译nginx时(—with-pcre=), 应该使用nginx的—with-pcre-jit编译选项开启JIT支持。
thread_pool name threads=number [max_queue=number]
定义线程池的名字,线程数量以及任务队列的最大长度。一个请求事件,如果线程池中的所有线程都处于忙碌状态,请求会被塞入任务队列。 max_queue
定义了任务队列的最大长度,默认值为65535。当任务队列溢出,任务将会以一个error进入完成状态。
timer_resolution interval
降低定时器的精度,进而减少gettimeofday()的系统调用数。默认情况下,每当有内核事件,都会调用gettimeofday()。使用此指令后,nginx只在固定时间间隔后才会调用。
worker_connections number
设置每个worker 进程可以处理的最大并发连接数。需要注意的是,这个数字包含所有连接(如后端连接以及其它的),而不仅仅是客户端连接。另一个需要注意的是,实际的并发连接数不能超过当前打开文件的最大限制。这个限制可以使用worker_rlimit_nofile
来指定。
worker_cpu_affinity cpumask ...
绑定worker进程到指定cpu。每个cpu用一个掩码来标识,需要为每个worker进程单独指定。worker进程默认不会绑定到cpu
1 比如
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
将每个工作进程分别绑定至不同的CPU,而
worker_processes 2;
worker_cpu_affinity 0101 1010;
将第一个工作进程绑定至CPU0/CPU2,将第二个工作进程绑定至CPU1/CPU3。
worker_processes number | auto
定义worker进程数。建议设置为当前cpu的核数,auto
会自动检测。
worker_rlimit_core size
定义worker进程core文件的尺寸。
worker_rlimit_nofile number
定义worker进程打开文件的最大数
working_directory directory
定义worker进程的工作目录。主要用来写core-file。worker进程需要有写权限。