先设置好linux 系统的 limit, 见其他博文
nginx 也有自己的 limit 设置:
1、 nginx.conf 设置 worker_rlimit_nofile
例如: worker_rlimit_nofile 65535;
同时连接的数量受限于系统上可用的文件描述符的数量,因为每个套接字将打开一个文件描述符。 如果NGINX尝试打开比可用文件描述符更多的套接字,会发现error.log中出现Too many opened files的信息。
使用ulimit检查文件描述符的数量: ulimit -n
现在,将此值增加到大于worker_processes * worker_connections的值。 应该是增加当前worker运行用户的最大文件打开数值。
NGINX提供了worker_rlimit_nofile指令,这是除了ulimit的一种设置可用的描述符的方式。 该指令与使用ulimit对用户的设置是同样的效果。此指令的值将覆盖ulimit的值
2、修改 nginx.service
# vim /usr/lib/systemd/system/nginx.service
增加
[Service] LimitNOFILE=65536
然后
systemctl daemon-reload
systemctl restart nginx
3、查看下当前实际的限制
ps -ef | grep nginx cat /proc/<pid>/limit
4、ps, 如果开启的端口很多, 可能导致nginx 服务启动超时失败
可修改 nginx.service
加入:
TimeoutStartSec=120
表示,允许服务启动使用 120s, 默认是 90s
修改后 systemctl daemon-reload
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux 下 nginx 的最大文件打开设置 - Python技术站