java.io.IOException: Too many open files

1. 使用ps -ef |grep java   (java代表你程序,查看你程序進程) 查看你的進程ID,記錄ID號,假設進程ID爲12

2. 使用:lsof -p 12 | wc -l    查看當前進程id爲12的 文件操作狀況

執行該命令出現文件使用情況爲 1052

3. 使用命令:ulimit -a   查看每個用戶允許打開的最大文件數


 

發現系統默認的是open files (-n) 1024,問題就出現在這裏。

4. 在系統文件/etc/security/limits.conf中修改這個數量限制,

在文件中加入內容:

* soft nofile 65536

* hard nofile 65536

這樣就修改了最大文件數量

ulimit -n 4096

這種網上說的方法,用戶重新登錄後就會回到默認值,不要用這種方法。

 

可能原因:

1.檢查了一下程序,可能是由於用了許多FileInputStream,使用完後沒有fileInputStream.close();造成打開的文件沒有及時關閉

2.Linux,Aix,Unix系統都有默認打開文件數目最大的限制,使用 ulimit –a 查看每個用戶允許打開的最大文件數,如果沒有設置,系統默認是打開1024個文件。

root用戶可以修改etc/security/limits.conf

加入

*  soft nofile 1024 
*  hard nofile 4096

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