【Linux】java.io.IOException: error=24, Too many open files解决

linux系统中执行java程序的时候,如果打开文件超过了限制,就会报错:

java.io.IOException: error=24, Too many open files

解决办法:

首先查看java程序的进程究竟打开了多少文件

这个java程序以tomcat为例

ps -ef | grep tomcat

获取到TomcatPid

再通过:

lsof -p TomcatPid | wc -l 

获取到打开的全部文件数

得到文件数后,再查看系统的限制是多少

ulimit -a

....

open file (-n) 1024

....

和刚才查出来的数对比果然超了。

临时修改limit限制数

ulimit -n 4096        #后面的数字是2的N次方,而且这条命令必须是root执行,如果其他用户执行会报错,提示没有权限

但是这个命令也仅仅临时生效,推出终端后,就失效了

建议永久修改:

echo "* soft nofile 4096" >> /etc/security/limits.conf  

echo "* hard nofile 4096" >> /etc/security/limits.conf  

执行完成后,确保下真的加到文件中了

cat /etc/security/limits.conf

在最后如果有的话,就没问题

执行su - 

假装推出在登陆,查看ulimit -a确定open file 的限制确实已经修改

确认没问题后,重启tomcat,再次查看是否还会出现too many open file 的问题

 

 

 

 

 

posted @ 2020-01-10 15:43  zclinux  阅读(463)  评论(0)    收藏  举报