linux企业实战-Nginx(6)-Nginx进程概述

当你启动nginx以后,使用ps命令查看nginx进程,会发现nginx进程不只有一个,默认情况下,你会看到至少两个
nginx进程,如下
 

【root@server1 demo】#ps-ef lgrep nginxlgrep
-V grep 
root 25921 1011:18?00:00:00

nginx:master process nginx nobody 

26745 25921 0 11:59?00:00:00
nginx:worker process

编译安装nginx后,默认情况下worker进程是以“nobody"用户的身份运行的,如果我们想要指定worker进程的运行用户,则可以使用“user“指令,比如,指定worker进程以nginx用户的身份运行

当我启动nginx以后,有两个nginx进程,一个master进程,一个worker进程,这两个nginx进程都有各自的作用,见名知意,“worker"进程天生就是来“干活”的,真正负责处理请求的进程就是你看到的“worker“进程,那么"master"进程有什么用呢?“master"进程其实是负责管理“worker"进程的,除了管理"worker"进程,master"进程还负责读取配置文件、判断配置文件语法的工作,“master进程"也叫“主进程",在nginx中,"master"进程只能有一个,而“worker"进程可以有多个,worker"进程的数量可以由管理员自己进行定义,那么怎么定义"worker"进程的数量呢?没错,我们只需要借助一条配置指令即可,这条配置指令就是“worker_processes“指令

默认的nginx.conf配置文件中有这样一条配置
worker_processes 1;
上述配置的意思就是启动nginx后只有1个worker进程,你想要多少个worker进程,将worker_processe指令的值设置成多少就好了,非常简单,worker_processes指令只能在main区域中使用,通常情况下,worker_processes的值通常不会大于服务器中cpu的核心数量,换句话说就是,worker进程的数量通常与服务器有多少cpu核心有关,比如,nginx所在主机

设定worker_processes auto

然后启动nginx发现可以实现一个master四个work

拥有4核cpu,那么worker_processes的值通常不会大于4,这样做的原因是为了尽量让每个worker进程都有一个cpu可以使用,尽量避免了多个worker进程抢占同一个cpu的情况,我们也可以将worker_processes的值设置为"auto"当worker_processes的值为auto时,nginx会自动检测当前主机的cpu核心数量,并启动对应数量的worker进程,比如,nginx检测到当前主机一共有4个cpu核心,那么nginx就会启动4个worker进程

同时,为了避免cpu在切换进程时产生性能损耗,我们也可以将worker进程与cpu核心进行“绑定",当worker进程与cpu核心绑定以后,worker进程可以更好的专注的使用某个cpu核心上的缓存,从而减少因为cpu切换不同worker进程而带来的缓存失效,如果想要让worker进程与某个cpu核心绑定,则需要借助另外一个配置指令,它就是“worker_cpu_affinity“指令

想要搞明白怎样使用“worker_cpu_affinity“指令,最好先来了解一个概念,这个概念就是“cpu掩码”,我们可以通过“cpu掩码“表示某个cpu核心,比如,当前机器上一共有4个cpu核心,那么我们就用4个0表示这4个核,也就是说,我们可以使用如下字符表示这4个核:0000那么第一个核就用如下字符表示
0001
第二个核就用如下字符表示
0010
第三个核就用如下字符表示
0100
第四个和就用如下字符表示

1000

规律就是,有几个核,就用几个0表示,如果想要使用某个核,就将对应位置的0改成1,位置从右边开始比如,如果有8个核,我就可以使用如下字符表示这8个核中的第二个核:
00000010

同时,为了避免cpu在切换进程时产生性能损耗,我们也可以将worker进程与cpu核心进行“绑定",当worker进程与cpu核心绑定以后,worker进程可以更好的专注的使用某个cpu核心上的缓存,从而减少因为cpu切换不同worker进程而带来的缓存失效,如果想要让worker进程与某个cpu核心绑定,则需要借助另外一个配置指令,它就是“worker_cpu_affinity“指令

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值