Nginx的worker_connections默认值通常为512(源码编译)或1024(发行版包安装),须与系统文件描述符、worker_rlimit_nofile及内核队列同步调优,否则设高无效。

Nginx 的 worker_connections 默认值通常是 512 或 1024,具体取决于安装方式和版本。官方源码编译默认为 512,主流发行版(如 Ubuntu/Debian/CentOS 的包管理安装)通常设为 1024。
怎么确认当前值
运行以下命令查看生效配置:
-
nginx -T 2>/dev/null | grep -A2 'events {'—— 显示完整的 events 块内容 - 或直接查配置文件:
grep worker_connections /etc/nginx/nginx.conf - 注意:如果没显式配置,就按默认值走;若配置写在错误位置(比如 http 块里),该行会被忽略
修改方法(必须同步做四件事)
单独改 worker_connections 几乎无效,它只是“上限标尺”,实际能力由整条资源链最短板决定。
-
① 改 Nginx 配置:编辑
/etc/nginx/nginx.conf,确保worker_connections写在events { }块内,例如:
events {
worker_connections 8192;
} -
② 提升系统级文件描述符限制:编辑
/etc/security/limits.conf,添加(把nginx换成你实际运行用户,如www-data):
nginx soft nofile 65536
nginx hard nofile 65536 -
③ 声明 Nginx 进程自身能用的 fd 上限:在
nginx.conf主上下文(events 块外、http 块前)加一行:
worker_rlimit_nofile 65536;(建议 ≥worker_connections × worker_processes) -
④ 调大内核连接队列:编辑
/etc/sysctl.conf,加入:
net.core.somaxconn = 65535
fs.file-max = 2000000,然后执行sysctl -p
改多少合适
不能只看数字大小,要结合业务类型和系统资源:
- 普通网站、低频 API:从 4096 起步
- 短连接密集型(如微服务网关、CDN 回源):推荐 16384~32768
- 长连接或 HTTPS 场景(含 SSL 缓存、OCSP 等):建议 ≤ 单进程
ulimit -n的 70%~80%,比如 ulimit 是 65536,就设 40960 或更低 - 别盲目堆高:每个连接约占用 328 字节内存,65535 连接会多占约 21MB 内存/worker 进程
验证是否生效
改完后务必执行三步:
-
nginx -t检查语法 -
nginx -s reload重载配置 - 观察日志是否有
worker_connections are not enough或Too many open files报错


















