高性能服务器——Nginx之进程

1、查看Nginx进程

启动 Nginx 以后,使用 ps 命令查 Nginx 进程,会看到至少两个 Nginx 进程,有 master 和 worker 。

ps -ef | grep nginx

2、指定worker进程的运行用户

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

  • 建立nginx用户:
useradd -u 900 nginx
  • 修改配置文件:
vim /usr/local/nginx/conf/nginx.conf
##修改文件第一行:
user	nginx nginx;
nginx -t		##语法检测
nginx -s reload		##重新加载配置文件
ps -ef | grep nginx|grep -v grep	##可以看到worker进程的用户变为nginx

3、定义worker进程数

启动 Nginx 后,有两个 Nginx 进程:一个 master 进程,一个 worker 进程。
这两个 Nginx 进程有各自的作用:

  • worker 进程是真正负责处理请求的进程。
  • master 进程是负责管理 worker 进程的。除了管理 worker 进程,master 进程还负责读取配置文件、判断配置文件语法。
  • master 进程也叫主进程,在 Nginx 中,master 进程只能有一个,而 worker 进程可以有多个,worker 进程的数量可以由管理员自己进行定义。

默认的 nginx.conf 配置文件中有这样一条配置worker_ processes 1,这个配置的意思就是启动 Nginx 后只有1个 worker 进程。同理,想要多少个 worker 进程,将 worker_processes 指令后的值设置为多少就可以了。

  • worker_ processes 指令只能在 main 区域中使用,通常情况下,worker_ processes 的值不会大于服务器中 cpu 的核心数量。
  • 比如,Nginx所在服务器是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数设置为4:
在这里插入图片描述
修改配置文件:

vim /usr/local/nginx/conf/nginx.conf
##修改文件第二行
worker_ processes	auto		
nginx -t			##语法检测
nginx -s reload		##重新加载配置文件
ps -ef | grep nginx|grep -v grep	##可以看到4个worker进程

4、绑定 worker 和CPU

为了避免 cpu 在切换进程时产生性能损耗,我们也可以将 worker 进程与 cpu 核心进行"绑定"。当 worker 进程与 cpu 核心绑定以后,worker 进程可以更好的专注的使用某个 cpu 核心上的缓存,从而减少因为 cpu 切换到不同 worker 进程而带来的缓存失效。
如果想让 worker 进程与某个 cpu 核心绑定,则需要使用worker_ cpu_ _affinity指令:

  • worker_ cpu_ _affinity指令使用 cpu 掩码。
  • "cpu掩码"可以用来表示某个 cpu 核心。比如,当前机器上一共有4个 cpu 核心,那么我们就分别用4个0(0000)表示这4个核。
    第一个核可以表示为:0001
    第二个核可以表示为:0010
    第三个核可以表示为:0100
    第四个核可以表示为:1000
    即,有几个核,就用几个0表示,如果想要使用某个核,就将对应位置的0改成1(从右边开始数,右一表示第一个,右二表示第二个,以此类推)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值