解决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错误。
 

 

posted on 2020-10-19 11:04  相思木木  阅读(4020)  评论(0编辑  收藏  举报

导航