nginx高并发优化之核心模块设置

时间:2022-11-03 11:28:38

一、概述

user   nginx nginx;
worker_processes auto;
worker_cpu_affinity auto;
error_log /www/log/nginx_error.log crit;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 65535;

二、说明

1、nginx服务的进程数
ginx通过工作进程处理具体的请求,设置几个工作进程就代表允许几个并发。最优的设置是worker进程数量要与CPU的核数相等
worker_processes 8;
#建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数。
#查看自身系统配置:cat /proc/cpuinfo| grep "processor"| wc -l
#或者top命令输出1查看
worker_processes 8;
worker_processes auto;

2、指定CPU内核来运行工作进程
默认情况下worker进程不绑定在任何一个CPU上。在 nginx 版本 1.9.10 之后,是可以自动将 worker 进程绑定到对应的 cpu 上面的。
#为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
默认情况下,Nginx的多个进程有可能跑在某一个CPU或CPU的某一核上,导致Nginx进程使用硬件的资源不均,因此绑定Nginx进程到不同的
CPU上是为了充分利用硬件的多CPU多核资源的目的。
worker_cpu_affinity用来为每个进程分配CPU的工作内核,参数有多个二进制值表示,每一组代表一个进程,每组中的每一位代表该进程使
用CPU的情况,1代表使用,0代表不使用。

#启动多少worker进程,官方建议和CPU核心数一致,第一种绑定组合方式
8核CPU2进程设置:worker_processes 2; worker_cpu_affinity 10101010 01010101;
第二种方式
8核CPU8进程设置:worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
最佳方式绑定方式
worker_processes auto;
worker_cpu_affinity auto;

3、work进程最大打开文件数
worker_rlimit_nofile 65535;
#当一个nginx进程打开的最多文件描述符数目,理论值应该是系统的最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请
求并不是那么均匀,所以最好与ulimit -n的值保持一致。