Too many open files問題解決


項目運行過程出現如下問題

經查詢,找出原因,並進行解決

具體原因如下:

too many open files(打開的文件過多)是Linux系統中常見的錯誤,從字面意思上看就是說程序打開的文件數過多,不過這里的files不單是文件的意思,

也包括打開的通訊鏈接(比如socket),正在監聽的端口等等,所以有時候也可以叫做句柄(handle),這個錯誤通常也可以叫做句柄數超出系統限制。

引起的原因就是進程在某個時刻打開了超過系統限制的文件數量以及通訊鏈接數,通過命令ulimit -a可以查看當前系統設置的最大句柄數是多少:

open files那一行就代表系統目前允許單個進程打開的最大句柄數,這里是1024。

使用命令lsof -p 進程id可以查看單個進程所有打開的文件詳情,使用命令lsof -p 進程id | wc -l可以統計進程打開了多少文件: 

以裸啟動的tomcat為例,可以看到它目前打開了108個文件數,如果文件數過多使用lsof -p 進程id命令無法完全查看的話,可以使用lsof -p 進程id > openfiles.log將執行結果內容輸出到日志文件中查看。

解決方法如下:

1、增大允許打開的文件數——命令方式

ulimit -n 2048

這樣就可以把當前用戶的最大允許打開文件數量設置為2048了,但這種設置方法在重啟后會還原為默認值。 

ulimit -n命令非root用戶只能設置到4096。 

2、增大允許打開的文件數——修改系統配置文件

vim /etc/security/limits.conf

加入

* - nofile 8192

來源:

https://blog.csdn.net/roy_70/article/details/78423880

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM