Appearance
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性能。