【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 的问题
只有学习才能跟上时代的脚步