解决java.io.IOException: Too many open files报错问题


周一来了之后发现 某个jar包服务报错 一直提示
java.io.IOException: Too many open files
 
意思是文件句柄打开超过限制,导致服务不可用
 
查看了下 系统默认的是 

 

 百度上很多文章都说是因为系统默认的是1024太小所致,修改

/etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
修改完成保存,重启服务器
 
但系统已经非常大了,而程序实际打开的也不过4632
而查看服务所打开的 也不过4000多
 
lsof -p 21667 |wc -l
4632
 
所以问题不在这
 

 

 

果然程序默认最大能打开的文件句柄是4096 报错原因找到了 ,通过修改该文件的配置解决本次问题。
 
但这不是根本解决问题,根本问题应该是开发写代码的时候往往就会粗心的忘记对Connection、Session、Socket、节点流和处理流等进行关闭操作,而linux下对文件操作数量有限制,当超过默认的最大打开文件数量时,就会报Too many open files错误。
 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM