什么是cpu的亲和性:
CPU亲和性:就是进程要在指定的CPU上尽可能长时间地运行而不被迁移到其他处理,也称为cpu关联性,绑核。
为什么要给nginx绑定cpu:
默认情况下,Nginx的多个进程有可能跑在某一个CPU或者CPU的某一核心上,导致Nginx进程使用硬件资源不均,此外,在多任务,高并发场景下,进程可能会被系统在CPU的不同核心上调度,使得CPU缓存命中率降低。因此,绑定Nginx进程到不同的CPU上可充分利用硬件的多CPU多核资源,同时在提高系统性能。
准备工作:
- 准备一台nginx机器,参数如下:
[root@nginx-up ~]# nginx -v
nginx version: nginx/1.9.0
[root@nginx-up ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
- 首先查看nginx进程分配的cpu情况:
[root@nginx-up ~]# ps -eo pid,args,psr|grep nginx
12516 nginx: master process /opt/ 0
12517 nginx: worker process 0
12518 nginx: worker process 0
12566 grep --color=auto nginx 1
- 参数解释一下:
pid | 进程id |
---|---|
args | 该进程执行时传入的命令行参数 |
psr | 分配给进程的逻辑cpu |
- 查看一下当前机器逻辑cpu个数:
[root@nginx-up ~]# cat /proc/cpuinfo |grep 'processor' |wc -l
2
- 因为cpu核数不同,绑定亲和力时方法以不同,具体如下
worker_processes 2