worker_processes 是 Nginx 配置文件中的一个重要指令,用于设置 Nginx 启动的工作进程数。合理配置 worker_processes 可以显著提升 Nginx 的性能和稳定性。

语法

worker_processes number | auto;

参数说明

  • number:指定工作进程的数量,可以是一个具体的数字。
  • auto:自动根据系统CPU核心数设置工作进程数。

默认值

默认情况下,worker_processes 的值为 1

配置位置

worker_processes 指令通常放置在 Nginx 配置文件的最外层,即 events 块和 http 块之外。

示例

worker_processes auto;

events {
    worker_connections 1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  example.com;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

详细解释

  1. worker_processes auto;
  • 使用 auto 关键字可以让 Nginx 自动检测系统的CPU核心数,并设置相同数量的工作进程。
  • 这是一个推荐的做法,因为它可以根据系统资源自动调整工作进程数,避免手动配置带来的误差。
  1. worker_processes number;
  • 指定一个具体的数字来设置工作进程数。
  • 例如,worker_processes 4; 表示启动4个工作进程。

配置建议

  1. 多核CPU
  • 对于多核CPU系统,建议使用 worker_processes auto;,让 Nginx 自动根据CPU核心数设置工作进程数。
  • 这样可以充分利用多核CPU的性能,提高并发处理能力。
  1. 单核CPU
  • 对于单核CPU系统,通常设置 worker_processes 1; 即可。
  • 多个工作进程在单核CPU上可能会导致上下文切换频繁,影响性能。
  1. 高并发场景
  • 在高并发场景下,可以适当增加工作进程数,但不要超过CPU核心数。
  • 例如,对于8核CPU,可以设置 worker_processes 8;worker_processes auto;
  1. 内存限制
  • 每个工作进程都会占用一定的内存,因此需要考虑系统的内存容量。
  • 如果内存有限,可以适当减少工作进程数,避免内存不足导致的问题。

相关配置

  1. worker_connections
  • 每个工作进程可以处理的最大并发连接数。
  • 例如,worker_connections 1024; 表示每个工作进程可以处理1024个并发连接。
  1. multi_accept
  • 控制每个工作进程在接受新连接时的行为。
  • multi_accept on; 表示每个工作进程可以一次性接受多个连接。
  • multi_accept off; 表示每个工作进程每次只接受一个连接。

示例配置

worker_processes auto;

events {
    worker_connections 1024;
    multi_accept on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  example.com;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}