Nginx 默认没有开启利用多核 cpu,我们可以通过 worker_processes
指令来启动多个 worker,但是 worker 最终运行在哪些 cpu 核上是系统层进行调度的。
我们可以通过增加 worker_cpu_affinity
指令来对 worker 所运行的 cpu 核做绑定,以此充分利用 cpu 多核 cpu 的性能。cpu 是任务处理、计算最关键的资源,cpu 核越多,性能就越好;通过将 nginx worker 绑定到特定的 CPU 上可以避免因为 worker 被频繁调度带来的 CPU 的 cache miss 和某些 cpu 核负载不均的问题。
Nginx CPU 亲和性配置有两种方式,即手动绑定方式与自动绑定方式。
需要手动写要绑定到 CPU 核的配置,cpu 有多少个核,就有几位数,1 代表内核开启,0 代表内核关闭,比如,启动 4 个 worker,分别绑定到 CPU0 ~ CPU3 上:
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
或者,启动 2 个 worker;worker 1 绑定到 CPU0/CPU2 上;worker 2 绑定到 CPU1/CPU3 上:
worker_processes 2;
worker_cpu_affinity 0101 1010;
自适应的方式来启动一定数量的 worker,并且自动绑定到对应的 cpu 核心上,这里启动的 worker 数量和 cpu 核心数相同:
worker_processes auto;
worker_cpu_affinity auto;
也可以通过下面的配置方式来限制 CPU 资源的使用,只将 nginx worker 绑定到特定的一些 cpu 核心上:
worker_cpu_affinity auto 01010101;
Nginx 默认没有开启利用多核 cpu,我们可以通过 worker_processes
指令来启动多个 worker,但是 worker 最终运行在哪些 cpu 核上是系统层进行调度的。
我们可以通过增加 worker_cpu_affinity
指令来对 worker 所运行的 cpu 核做绑定,以此充分利用 cpu 多核 cpu 的性能。