1.配置指令worker_processes
- 当启动nginx以后,使用ps命令查看nginx进程
- 默认情况下,有至少两个nginx进程
- 由于是源码编译,因此没有nginx用户,所以有nobody
ps -ef | grep nginx | grep -v grep
#查看进程
useradd -u 900 nginx
#新建nginx用户cp nginx.conf /usr/local/nginx/conf/
#恢复nginx.conf文件vim nginx.conf
#编辑配置文件,添加nginx用户- 编辑内容如下:
- 编译安装nginx后,默认情况下worker进程是以“nobady”用户的身份运行
- 若要指定worker进程的用户,可以使用“user”指令
- 比如,指定worker进程以nginx用户的身份运行
当启动nginx以后,有两个nginx进程,一个master进程,一个worker进程,这两个进程都有各自的作用
真正负责处理请求的进程就是“worker”进程
“master”进程负责管理“worker”进程,还负责读取配置文件、判断配置文件语法的工作,也叫“主进程”
“master”进程只能有一个,而“worker”进程可以有多个
“worker”进程的数量可以由管理员自己进行定义
定义“work”进程的数量的配置指令:worker_processes
- 默认的nginx.conf配置文件中的配置:
worker_processes 1;
- 意思为:启动nginx后只有1个worker进程
- worker_processes指令只能在main区域中使用
- 通常情况下,worker_processes的值不会大于服务其中cpu的核心数量
- 原因是为了尽量让每个worker进程都有一个cpu可以使用,尽量避免多个worker进程抢占同一个cpu的情况
- 也可以将worker_processes的值设置为“auto"
- 当worker_processes的值为auto时,nginx会自动检测当前主机的cpu核心数量,并启动对应数量的worker进程
2.示例
- 将cpu改为4
- 将配置文件中改为auto
3.配置指令worker_cpu_affinity
- 为了避免cpu在切换进程时产生性能损耗,可以将worker进程与cpu核心进行“绑定”
- 当worker进程与cpu核心绑定以后,worker进程可以更好的专注的时用某个cpu和欣赏的缓存
- 从而减少因为cpu切换不同worker进程而带来的缓存失效
- 让worker进程与某个cpu核心绑定的配置指令:
worker_cpu_affinity
cpu掩码:
可以通过cpu掩码表示某个cpu核心
比如,有4个cpu核心,用4个0表示这4个核
第一个核:0001
第二个核:0010
第三个核:0100
第四个核:1000
有几个核,就用几个0表示
如果想使用某个核,就将对应位置的0改为1,位置从右边开始
如果有8个核,时用第二个核:00000010