Too many open files 報錯是 Linux 系統常見的故障,網絡上也能輕易的找到解決辦法,Linux系統配置open files table的文件限制,如果超過配置值,就會拒絕其它文件操作的請求,並拋出Too many open files異常。這種限制有系統級和用戶級之分。我也只是在工作中遇到了這個問題,所以在博客記錄下,以備不時之需。
一、報錯截圖:
圖為resin的報錯日志,很明顯提示了Too many open files:
二、臨時解決
臨時的解決辦法很簡單,先執行 ulimit -n 65535,然後重啟 resin 即可。
Ps:請注意啟動環境是否生效:切換到resin的啟動身份,執行 ulimit -n 查看當前的最大文件打開數是否已優化。
三、永久生效
方法一:
可講 ulimit -n 65535 添加到 /etc/profile 的最後即可;
BASICecho "ulimit -n 65535" >>/etc/profile
#刷新配置
BASICsource /etc/profile
方法二:
修改 /etc/security/limits.conf 文件,在最後添加以下內容即可:
* soft noproc 65535
* hard noproc 65535
* soft nofile 65535
* hard nofile 65535
或者直接執行如下代碼亦可:
echo '* soft noproc 65535
* hard noproc 65535
* soft nofile 65535
* hard nofile 65535'>>/etc/security/limits.conf
使用方法一,登陸普通賬號的時候,會報無權限錯誤,所以推薦使用方法二。需要說明的是,不管使用哪一種方法,修改生效後,需要重啟應用才行,否則程序將延續使用舊的環境設置。