博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
too many open files
阅读量:6979 次
发布时间:2019-06-27

本文共 744 字,大约阅读时间需要 2 分钟。

最近在做程序过程中惊现too many open files异常。

在web程序运行过程中,三不五时有用户反映页面打开慢,查询没有结果。当下的解决办法是赶紧重启了web服务器。然后分析日志,起初发现取连接池中的连接报取不到的错误,以为是连接池的问题,小紧张了一下。继续分析发现这些错误都是跟随在too many open files异常的后面,而这个异常又是常常跟在lucene查询索引的后面。google了一下,此类问题归结于应用程序打开的文件描述符超过系统限制所致,即网络连接(Socket也是一种特殊的文件)或文件IO没有关闭,占用过多。

在linux系统中增大文件描述符的方法: 修改/etc/security/limits.conf,在文件末加上

* - nofile 2048 #具体可google一下。

增大应用程序的可用文件描述符数量不是治本的方法,需要找出是什么在占用而没有及时释放。根据跟踪日志文件定位于索引的查询方法,使用 lsof -p <pid> | wc -l ,查看web服务器进程占用的文件描述符,并不停的执行查询,发现值在不停增加,而且基本没有减少的趋势, lsof -p <pid> > log.txt ,查看导出的记录,发现大量索引文件的路径及名称,而且还有很多重复的文件名。

赶紧检查相关的代码,在处理索引查询的过程中用到循环(一次查询可能涉及到多个索引目录,但需要精确的计数),而indexseacher的关闭是在最后面finally里面,等于循环里面开启的索引文件连接都没有关闭,修改了这个低级bug。 再用 lsof -p <pid> | grep <索引文件的路径> | wc -l 命令测试,执行完索引查询后,查看返回0。问题解决,教训~

转载地址:http://kgypl.baihongyu.com/

你可能感兴趣的文章
topas解析(AIX)
查看>>
wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验
查看>>
为什么企业选择年底裁员?如何选择一个正确的公司!
查看>>
高德联手凯迪拉克 发布全球首个高精地图应用
查看>>
2018年IT市场最大的技术趋势和热点预测
查看>>
C语言竟成TIOBE年度编程语言候选!苹果iPhone 7卖得最好!
查看>>
云南实现手机自主补(换)领居民身份证
查看>>
呼伦湖国家级自然保护区管理局投放草料保野生黄羊过冬
查看>>
让普通视频变成慢动作:「AI加帧」技术现已开源
查看>>
实现一个完美符合Promise/A+规范的Promise
查看>>
前端 排序算法总结
查看>>
使用Vue+Spring Boot实现Excel上传
查看>>
linux学习笔记一
查看>>
工程师日常迷信指南
查看>>
bats-Bash自动化测试工具
查看>>
CSS题目系列(3)- 实现文字切割效果
查看>>
用mpvue实现的微信小程序版cnode社区
查看>>
react es6+ 代码优化之路-1
查看>>
《深入java虚拟机》读书笔记类加载
查看>>
深入浅出JVM的锁优化案例
查看>>