1、nginx优化
2、报错:accept4() failed (24: Too many open files)
发现问题:
生产出现大量请求超时,起初排查方向为http工具类的超时时间设置,加大值之后依旧超时。
检查nginx错误日志发现大量报错,导致请求到nginx直接返回500状态码,并非超时:
2023/09/13 09:28:04 [crit] 29643#29643: accept4() failed (24: Too many open files)
解决过程
1、优化系统资源配置
ulimit -n ,为默认值65535,修改/etc/security/limits.conf,加入下列内容
* soft nofile 10240400
* hard nofile 10240400
然后reload nginx,超时问题解决(错觉),nginx运行一段时间后又出现超时问题,继续排查
2、修改NGINX的Systemd单元文件
通过cat /proc/pid/limits 查看nginx的资源限制,发现并未生效
-
如果使用Systemd来管理NGINX服务,需要编辑NGINX的Systemd单元文件,以确保NGINX进程继承新的文件描述符限制。
-
打开NGINX的Systemd单元文件。通常,它位于
/etc/systemd/system/nginx.service
或/lib/systemd/system/nginx.service
:vim /lib/systemd/system/nginx.service
-
在
[Service]
部分添加以下行,将文件描述符限制设置为您的期望值(例如,8192):LimitNOFILE=81920
-
保存并关闭文件。
-
更新Systemd管理的服务列表:
systemctl daemon-reload
-
重新启动NGINX服务:
sudo systemctl restart nginx