1.user nobody;
功能:定义运行nginx服务的用户,还可以加上组,如 user nobody nobody;
2.error_log logs/error.log notice;
功能:定义错误日志路径以及日志级别,也可以定义到http、server、location里
错误日志级别:常见的错误日志级别有[debug|info|notice|warn|error|crit|alert|emerg],级别越高记录的信息越少。如果不定义默认是error,不要配置太低,会带来大量的磁盘I/O消耗。
3.pid logs/nginx.pid;
功能:定义nginx进程pid文件所在路径。
4.worker_processes
功能:定义工作进程的个数,是Nginx服务器实现并发处理服务的关键,受操作系统本身资源和能力,硬件设备等制约。
语法:
worker_processes number | auto;
number: 指定nginx进程最多可以产生多少个worker process(进程)数,默认值为1,最多开启8个;
auto: 设置此值,会自动根据核心数为生成对应数量的worker进程
linux查看核心数:
命令:lscpu
或者 cat /proc/cpuinfo | grep 'processor' | wc -l
5.worker_cpu_affinity
功能:将工作进程绑定到cpu集提升缓存的命中率,默认工作进程不绑定到任何特定的cpu
规定:cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭,该指令仅在FreeBSD和Linux上可用。
案例配置1:2 Core +8 worker_processes
worker_processes 8;
worker_cpu_affinity 01 10 01 10 01 10 01 10;
案例配置2:4 Core + 4 worker_processes
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
案例配置3: 8 Core + 8 worker_processes
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
案例配置4: 8 Core + 2 worker_processes
worker_processes 2;
worker_cpu_affinity 10101010 01010101;
案例配置5:自动检测
worker_processes auto;
worker_cpu_affinity auto;
6.worker_rlimit_nofile 65535;
功能;定义nginx最多打开文件数限制。如果没设置的话,这个值为操作系统(ulimit -n)的限制保持一致(理论上这个值是最多打开文件数(ulimit -n)与nginx工作进程相除)。把这个值设高,nginx就不会有“too many open files”问题了。
调整此参数的值需要修改系统参数:
查看系统级的最大限制:cat /proc/sys/fs/file-max
查看用户级的限制:ulimit -a
或者 ulimit -n
修改进程的最大openfile数:vim /etc/security/limits.conf
在主配置文件最后加入下面两句
* soft nofile 65535
* hard nofile 65535
保存后注销重新登录生效
(修改系统的最大打开数 vim /etc/sysctl.conf
在最后一行添加 fs.file-max=35942900
保存退出后用 sysctl -p
命令使配置生效)
查看:
ps -elf | grep nginx
找到 nginx 的worker进程ID
cat /proc/31613/limits
查看其中的Max open files(31613为进程ID)
7.worker_priority
功能:进程优先级,数值越低优先级越高占用资源越多,默认10,值范围-20 ~ 20# 建议配置-10即可,最好别低于Linux系统进程-5优先级
实例:
user nginx;
worker_processes auto;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
worker_priority -10;