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