too many open files

最近在做程序过程中惊现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。问题解决,教训~

时间: 2024-10-28 08:07:25

too many open files的相关文章

Files 集合

集合   一个文件夹中所有 File 对象的集合. 说明 下面这个例子说明了如何获得一个 Files 集合以及如何使用 Enumerator 对象和 for 语句来遍历该集合: function ShowFolderFileList(folderspec){   var fso, f, f1, fc, s;   fso = new ActiveXObject("Scripting.FileSystemObject");   f = fso.GetFolder(folderspec); 

Files 属性

  返回一个 Files 集合,由指定文件夹中包含的所有 File 对象组成,包括设置了隐藏和系统文件属性的文件. object.Files object 应为 Folder 对象. 说明 下面的代码说明了 Files 属性的用法: function ShowFolderFileList(folderspec){   var fso, f, fc, s;   fso = new ActiveXObject("Scripting.FileSystemObject");   f = fso

J2EE deployment files (ejb-jar.xml)

j2ee|xml <ejb-jar> The ejb-jar element is the root element of the EJB deployment descriptor. It contains an optional description of the ejb-jar file, optional display name, optional small icon file name, optional large icon file name, mandatory stru

J2EE deployment files(ejb-jar2.0.xml)

j2ee|xml <ejb-jar> The ejb-jar element is the root element of the EJB deployment descriptor. It contains an optional description of the ejb-jar file, optional display name, optional small icon file name, optional large icon file name, mandatory stru

J2EE deployment files(web.xml)

j2ee|web|xml <web-app> This file contains the configuration for a web-application. <icon> The icon element contains a small-icon and a large-icon element which specify the location within the web application for a small and large image used to

MySQL数据导入导出方法与工具介绍(2-import from sql files)

mysql|数据    MySQL数据导入导出方法与工具介绍(2-import from sql files)          批处理导入文件,从sql文件导入数据到数据库中 翻译声明:    本文内容来自Sam's Teach Yourself MySQL in 21 Days一书的部分内容,by Mark Maslakowski    英文原文版权属原作者所有,中文的部分翻译有略有增删;原书讲的过于清楚的地方有删,讲的不清楚的地方有增:如果有翻译的不妥或者不正确的地方,请指正. 翻译者:D

VB/Script 怎样读取一个目录下的所有文件名到数组? VB用dir,VBScript用files集合

vbscript|集合|数组|文件名 Example:VBfilename=dir("c:\*.*")i = 0do while filename = "" array1 (i)=filename i = i + 1 filename = dir("c:\*.*")loopVB好象也有比较好的方法,但是我不太清楚了VBScriptSet fs = CreateObject("Scripting.FileSystemObject"

Linux系统Too Many Open Files故障的处理

今天有个linux服务器一直报Too Many Open Files的异常,导致系统进行网络请求失败,重启应用容器之后恢复正常. 找到了当时的服务器连接监控,发现close_wait状态的连接一直在升高,上升到了10k后就引起应用报错了.因为我们设置的linux的最大的连接数为10240. 在博客园逛了一下,找到了下面的描述 如果我们的服务器TCP连接处于CLOSE_WAIT状态的话,那说明套接字是被动关闭的! 更多精彩内容:http://www.bianceng.cnhttp://www.bi

Android技巧:Unable to execute dex: Multiple dex files define解决方法

唔,之前已经想过今后不动android,没想到还是因为比赛的原因重操旧业.android有很多问题是由于eclipse的不完善造成的,比如今天遇到的这个问题 Unable to execute dex: Multiple dex files define [2011-10-23 16:23:29 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/myapp/R$array; [2011-10-23 16:23:

IBM iNotes 9企业协作新功能:与IBM connections Files和IBM Docs的整合

与 IBM Connections Files 和 IBM Docs 整合是 iNotes9.0 中提供的一个闪亮新特性.IBM Connections Files 是一个企业级信息共享,团队协作的平台.而 IBM Docs 也是一个企业级的在线文件编辑系统.iNotes9.0 与它们的整合有效地提高了企业内部的工作效率,同时也解决了发送,接收大附件所造成的邮件速度过慢,邮件空间受限的困扰. 如何实现这个功能呢?您的企业需部署 IBM Connections 4.0 CR2 和 IBM Docs