古詩詞大全網 - 團隊口號 - 中標麒麟 錯誤異常too many open files解決方法

中標麒麟 錯誤異常too many open files解決方法

參考文檔地址: (328條消息) 錯誤異常too many open files解決方法_二十同學的博客-CSDN博客_toomanyopenfiles

項目部署到中標麒麟系統上,登陸後過壹段時間頁面退出報這個錯誤

壹、產生原因

too many open files是Linux系統中常見的錯誤,從字面意思上看就是說程序打開的文件數過多,不過這裏的files不單是文件的意思,也包括打開的通訊鏈接(比如socket),正在監聽的端口等等,所以有時候也可以叫做句柄(handle),這個錯誤通常也可以叫做句柄數超出系統限制。

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

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

使用命令lsof -p 進程id可以查看單個進程所有打開的文件詳情,使用命令lsof -p 進程id | wc -l可以統計進程打開了多少文件,如果文件數過多使用lsof -p 進程id命令無法完全查看的話,可以使用lsof -p 進程id > openfiles.log將執行結果內容輸出到日誌文件中查看。

二、解決方法

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

ulimit -n 2048

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

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

想要設置到更大需要sudo權限或者root用戶。

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

vim /etc/security/limits.conf

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

roy soft nofile 8192

roy hard nofile 8192

註意”nofile”項有兩個可能的限制措施。就是項下的hard和soft。 要使修改過得最大打開文件數生效,必須對這兩種限制進行設定。 如果使用”-“字符設定, 則hard和soft設定會同時被設定。

3、檢查程序問題

如果妳對妳的程序有壹定的解的話,應該對程序打開文件數(鏈接數)上限有壹定的估算,如果感覺數字異常,請使用第壹步的lsof -p 進程id > openfiles.log命令,獲得當前占用句柄的全部詳情進行分析