高并发场景,页面打开速度慢,检查主机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 https://zhuanlan.zhihu.com/p/60799795
如果主机无systemctl命令 ,只有service命令需要重启nginx 生效。service nginx restart重启nginx
cat /etc/init.d/nginx 查看nginx service启动脚本可知,reload会保留原pid,而restart先stop再start,nginx会重新读取配置获得一个新的pid,配置的worker_rlimit_nofile才会生效。 
|