复制代码

为懒人提供无限可能,生命不息,code不止

人类感性的情绪,让我们知难行难
我思故我在
日拱一卒,功不唐捐
  • 首页
  • 前端
  • 后台
  • 数据库
  • 运维
  • 资源下载
  • 实用工具
  • 接口文档工具
  • 登录
  • 注册

nginx

【原创】nginx Too many open files错误

作者: whooyun发表于: 2018-01-20 11:47

最近生产系统访问量超过300万pv时,总是出现too many open files错误,所以优化了下,并记录下优化过程。

系统环境

centos 7.3
tomcat8.5 分别部署在俩台物理机
nginx1.8.0部署在其中一台tomcat物理机上,并已做负载均衡
pv 300万/天

错误信息
nginx的error.log日志大量出现Nginx accept() failed (24: Too many open files)

错误产生原因
这种错误问题的原因是因为linux文件系统最大可打开文件数默认为1024,文件句柄不够用,所以就错误提示出来了。

解决方法
1、更改系统文件句柄
在/etc/security/limits.conf文件中修改系统参数,没有你增加就好(比较粗暴,给所有用户都加上了,*就代表所有用户,为什么,因为我很懒)
* soft nofile 10240
* hard nofile 10240
如果你问后面那数字改多少合适,我真不知道,按我当前的pv来算,乘以10 。你也可以按你公司的业务量参考估算下。

2、修改nginx.conf中的参数
worker_connections  2048;
这个参数我默认用的是1024,我翻倍了,主要是想试下这个参数的作用。建议你也乘以10

3、重启下nginx

4、worker_processes auto;
这个参数原先是1,1个进程的线程数是有限的,所以被我修改成了自动,nginx自己分配更好,具体作用,我就不在这里介绍了。

4、如果重启nginx还无法生效,那就重启下机器,理论上也是需要重启下机器的,因为我们改的是系统参数。