高并发场景,页面打开速度慢,检查主机nginx日志,发现在error.log日志中大量刷新Too many open files 报错信息。解决该问题需要优化主机open files参数,步骤如下。
1.修改主机open files 配置
此限制仅对非root用户有效,root用户进程无此限制。
vim /etc/security/limits.conf 调整配置如下
保存后实时生效。重新登录主机后 ulimit -a 查看配置如下,已成功修改。
2.优化nginx work_connections相关参数,新增worker_rlimit_nofile配置
worker_processes 设置为主机cpu同数量
查看主机cpu数可用top命令输入1。
3.检查nginx进程限制
优化以上两步之后还是发现无效,有可能是因为ulimit和limits.conf的配置只针对登录用户,而如果是以服务的形式启动。
cat /proc/pid/limits 查看nginx进程限制配置信息
参考下文 修改nginx service文件。
https://www.bbsmax.com/A/Vx5MDR99JN
如果主机无systemctl命令 ,只有service命令需要重启nginx 生效。service nginx restart重启nginx
cat /etc/init.d/nginx
查看nginx service启动脚本可知,reload会保留原pid,而restart先stop再start,nginx会重新读取配置获得一个新的pid,配置的worker_rlimit_nofile才会生效。