Nginx配置调优

全局模块下的调优

worker_processes

打开 nginx.conf 配置文件,可以看到 worker_processes 的默认值为 1。
Nginx配置调优

worker_processes,工作进程,用于指定 Nginx 的工作进程数量。其数值一般设置为 CPU内核数量,或内核数量的整数倍。不过需要注意,该值不仅仅取决于 CPU 内核数量,还与硬盘数量及负载均衡模式相关。在不确定时可以指定其值为 auto。
Nginx配置调优

worker_cpu_affinity

worker 进程与具体的内核进行绑定。不过,若指定worker_processes 的值为 auto,则无法设置worker_cpu_affinity。
Nginx配置调优

该设置是通过二进制进行的。每个内核使用一个二进制位表示,0 代表内核关闭,1 代表内核开启。也就是说,有几个内核,就需要使用几个二进制位。
Nginx配置调优

worker_rlimit_nofile

用于设置一个 worker 进程所能打开的最多文件数量。其默认值与当前 Linux 系统可以打开的最大文件描述符数量相同。
Nginx配置调优

events 模块下的调优

worker_connections

设置每一个 worker 进程可以并发处理的最大连接数。该值不能超过 worker_rlimit_nofile的值。

accept_mutex

on:默认值,表示当一个新连接到达时,那些没有处于工作状态的 worker 将以串行方式来处理;
off:表示当一个新连接到达时,所有的 worker 都会被唤醒,不过只有一个 worker 能获取新连接,其它的 worker 会重新进入阻塞状态,这就是“惊群”现象。
举个例子来说,假如有1000个小盆友在操场,这时你有一个玩具,当on时相当于你拽过来一个小朋友把玩具给他。OFF时相当于你把玩具放在那里让小盆友抢,谁抢到谁来玩,这个时候OFF会很乱且没有效率,但是如果有200个玩具呢,轮流拽小朋友发效率就低了,不如让他们抢。同理,当Nginx访问量小的时候on效率是比较高的,但是当访问量很大的时候off效率较高,这没有一个很标准的界定,需要不断地压测来测试。

accept_mutex_delay

设置队首 worker 会尝试获取互斥锁的时间间隔。默认值为 500 毫秒。

multi_accept

off:系统会逐个拿出新连接按照负载均衡策略,将其分配给当前处理连接个数最少worker。
on:系统会实时的统计出各个 worker 当前正在处理的连接个数,然后会按照“缺编”最多的 worker 的“缺编”数量,一次性将这么多的新连接分配给该 worker。
同样这没有一个很标准的界定,需要不断地压测来测试