linux 中 too many open files

服務器中出現“too many open files”的錯誤主要原因有兩個:

1、可能是打開的文件或是socket沒有正常關閉。
爲了定位問題是否由Java進程引起,通過Java進程號查看當前進程佔用文件描述符情況:
lsof -i:port 通過你程序使用端口的查看PID
lsof -p pid每個文件描述符的具體屬性
lsof -p pid | wc -l 查看某一進程的打開文件數量

2、系統級設置對所有用戶有效

查看每個用戶最大允許打開文件數量
ulimit -n

修改用戶允許最大打開文件數量

sudo vim /etc/security/limits.conf
在最後加入

* soft nofile 4096  
* hard nofile 4096  

最前的 * 表示所有用戶,可根據需要設置某一用戶,例如

user soft nofile 8192  
user hard nofile 8192  

改完後註銷一下就能生效。

小結:如果你的進程達到了系統允許的最大打開文件數量時,去檢查一下自己的代碼是否有文件流沒有正常關閉;如果需要擴大最大文件打開數量按第二種情況操作,數量是1024、2048、4096等2的n次方。

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