too many open files问题

linux环境下,程序运行时,出现了too many open files的错误。

通过名字就能看出来,是打开了太多的文件,超过了系统限制。

ulimit -a

通过这个命令可以查看当前系统设置的最大句柄数是多少

可以看到,文件打开数量,最大值是1024,如果再有新文件打开就会报上述错误。

这个问题主要是一些IO流没有关闭造成的,比如我这出现这个问题的原因就是解压时候ZipFile对象没有close()造成的。

查看具体是什么没有关闭的方法:

jps

这个命令能够查看java环境下的正在执行的线程的pid

然后

lsof -p XXX >openfiles.log

上边的XXX填写pid号,如上边jps查询出来的10240、20180等

lsof -p 10240 >1.log
lsof -p 20180 >2.log
lsof -p 26311 >3.log
lsof -p 9225 >4.log
lsof -p 10186 >5.log
lsof -p 10300 >6.log

将信息导入到这些log进行查看,就能观察出来了。

原文地址:https://www.cnblogs.com/jinzhiming/p/10304694.html