【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 的問題

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章