Nginx 中动态调整 worker 进程绑定到特定 CPU 核心

Mike_Jia / 2025-01-21 / 原文

在 Nginx 中动态调整 worker 进程绑定到特定 CPU 核心,可以通过以下两种方式实现:

### 1. 使用 `auto` 参数自动绑定
Nginx 1.9.10 版本引入了 `auto` 参数,允许 Nginx 自动将 worker 进程绑定到可用的 CPU 上。这种方式不需要手动指定每个 worker 进程绑定到哪个 CPU 核心,Nginx 会自动进行分配。配置如下:
```nginx
worker_processes auto;
worker_cpu_affinity auto;
```
这种方式适用于不想手动管理 CPU 亲和性,希望 Nginx 自动处理的场景。

### 2. 手动指定 CPU 亲和性
如果你需要更精细地控制每个 worker 进程绑定到特定的 CPU 核心,可以手动指定 `worker_cpu_affinity`。例如,如果你有 4 个 CPU 核心,并且希望将 4 个 worker 进程分别绑定到这 4 个核心上,可以这样配置:
```nginx
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
```
在这个配置中,`0001`、`0010`、`0100`、`1000` 分别代表一个 worker 进程绑定到一个 CPU 核心,其中 `1` 表示启用该核心,`0` 表示不启用。

### 注意事项
- 动态调整 worker 进程的 CPU 亲和性通常需要重启 Nginx 服务,因为 Nginx 的配置是在启动时一次性加载到内存中的。
- 使用 `auto` 参数可以简化配置,但可能不如手动指定那样精确控制每个进程的 CPU 亲和性。
- 手动指定 CPU 亲和性时,需要确保配置正确,错误的配置可能导致某些 CPU 核心没有被充分利用。

通过以上方法,你可以根据具体需求动态调整 Nginx 的 worker 进程绑定到特定的 CPU 核心,以优化性能和资源利用。