Nginx性能取决于系统内核参数的设定以及Nginx自身的配置情况。自身调优配置主要来源于Core functionality
提供选项。
::: warning 注意
性能调优需要结合现场实际,切勿生搬硬套
:::
自身配置
accept_mutex
Syntax: accept_mutex on | off;
Default: accept_mutex off;
Context: events
开启该选项表示所有worker进程轮流的接受新的请求。默认情况下,一旦有新的请求都会通知所有的worker进程。如果新连接的数量较低,那所有请求都会通知一遍worker进程,造成系统资源浪费。推荐开启。
multi_accept on
Syntax: multi_accept on | off;
Default: multi_accept off;
Context: events
如果禁用multi_accept,则工作进程将一次接受一个新连接。否则,工作进程将一次接受所有新连接。推荐开启
use method
Syntax: use method;
Default: —
Context: events
指定默认的请求处理方法,一般不需要特殊指定,Nginx会根据系统自动选择最合适的选项。推荐使用use epoll
worker_aio_requests number
Syntax: worker_aio_requests number;
Default: worker_aio_requests 32;
Context: events
当使用aio及epoll方法时,指定每个工作进程的最大的异步I/O操作数量
worker_connections number
Syntax: worker_connections number;
Default: worker_connections 1024;
Context: events
设置工作进程可以打开的最大同时连接数默认值是1024。这个数值包括了包括了所有的链接,这个数值不能超过打开文件的最大数量。
worker_cpu_affinity cpumask
Syntax: worker_cpu_affinity cpumask ...;
worker_cpu_affinity auto [cpumask];
Default: —
Context: main
设置cpu亲和性,将worker进程绑定到CPU核心。每个cpu核心都由允许cpu的位掩码表示。应该为每个worker进程定义一个单独的集合。默认情况下,工作进程不绑定到任何特定的cpu。
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
除了手动指定核心外,从1.9.0开始支持自动绑定核心
worker_processes auto;
worker_cpu_affinity auto;
也可以指定核心让nginx自动绑定调度
#nginx的worker进程仅会与奇数核心的cpu核心绑定
worker_cpu_affinity auto 01010101;
worker_processes number | auto
Syntax: worker_processes number | auto;
Default: worker_processes 1;
Context: main
设定nginx的worker进程数量,默认数量为1。设置为cpu核心数或者是auto选项最佳。
worker_rlimit_nofile num
Syntax: worker_rlimit_nofile number;
Default: —
Context: main
设定nginx可以打开最大文件数量,默认为65535,这个值推荐与系统的可以打卡的最大文件数(ulimit -n)一致