Skip to content

Worker进程优化

优化Worker进程可以提高Nginx性能。

基本配置

Worker进程数

nginx
worker_processes auto;

说明:

  • auto:自动设置为CPU核心数
  • 也可以设置为具体数字

Worker连接数

nginx
events {
    worker_connections 1024;
}

说明:

  • 每个Worker进程的最大连接数
  • 默认值:1024

完整配置

生产环境配置

nginx
worker_processes auto;
worker_rlimit_nofile 65535;

events {
    worker_connections 4096;
    use epoll;
    multi_accept on;
}

http {
    ...
}

参数说明

worker_processes

auto

  • 自动设置为CPU核心数
  • 推荐使用

数字

  • 手动设置Worker进程数
  • 一般设置为CPU核心数

worker_connections

1024

  • 默认值
  • 适合小型网站

4096

  • 中型网站
  • 推荐值

8192

  • 大型网站
  • 需要足够的内存

worker_rlimit_nofile

65535

  • 每个Worker进程的最大文件描述符数
  • 应该大于worker_connections

完整示例

生产环境配置

nginx
user nginx;
worker_processes auto;
worker_rlimit_nofile 65535;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections 4096;
    use epoll;
    multi_accept on;
}

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

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/conf.d/*.conf;
}

性能测试

查看Worker进程

bash
ps aux | grep nginx

查看连接数

bash
netstat -an | grep :80 | wc -l

压力测试

bash
ab -n 10000 -c 100 http://example.com/

常见问题

连接数不足

原因: worker_connections设置过小

解决: 增加worker_connections

nginx
events {
    worker_connections 4096;
}

文件描述符不足

原因: worker_rlimit_nofile设置过小

解决: 增加worker_rlimit_nofile

nginx
worker_rlimit_nofile 65535;

总结

Worker进程优化的关键点:

  • worker_processes:设置为auto或CPU核心数
  • worker_connections:根据需求设置连接数
  • worker_rlimit_nofile:设置足够的文件描述符
  • use epoll:使用epoll事件模型
  • multi_accept:同时接受多个连接

合理优化Worker进程,提高Nginx性能。