Nginx worker 进程个数
语法:worker_processes number;
默认:worker_processes 1;
worker 进程的数量会直接影响性能,那么,用户配置多少个 worker 进程才好呢?这实
际上与业务需求有关。
每个 worker 进程都是单线程的进程,它们会调用各个模块以实现多种多样的功能。如
果这些模块确认不会出现阻塞式的调用,那么,有多少 CPU 内核就应该配置多少个进程;反 之,如果有可能出现阻塞式调用,那么需要配置稍多一些的 worker 进程。
查看CPU个数:cat /proc/cpuinfo |grep "cores"|uniq
或者:top命令后 按1
比如查到结果是 cpu cores : 4
worker_processes 4;
并用worker_cpu_affinity 配置来绑定 CPU 内核
为什么要绑定 worker 进程到指定的 CPU 内核呢 ? 假定每一个 worker 进程都是非常繁忙 的 , 如果多个 worker 进程都在抢同一个 CPU , 那么这就会出现同步问题 。 反之 , 如果每一 个 worker 进程都独享一个 CPU , 就在内核的调度策略上实现了完全的并发。
更多参照:
https://blog.csdn.net/u011957758/article/details/50959823
例如:
2个CPU内核
worker_processes 2;
worker_cpu_affinity 01 10;
4个CPU内核
worker_processes 4;
worker_cpu_affinity 1000 0100 0010 0001;
8个CUP内核
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;