在開發中遇到了部署到服務器的拋出這個異常,直接導致了springboot啓動失敗,而在其他的機器正常,所以應該與服務器的機器配置問題有關,這個問題出現是由於文件描述符不夠了,出現這個問題需要檢查兩點:
1.是否自己的應用開啓過多的連接
2.是否自己的機器設置的limit太低
查看文件描述符大小:
修改文件描述符大小:
方法1,只對當前session有效,設置限制爲62235:
ulimit -HSn 62235
方法2,永久有效:
在/etc/security/limits.conf加入
* - nofile 65535
內核參數對文件描述符也有限制,文件描述符的值不能大於內核的限制。
查看內核參數中文件描述符的值
修改內核參數:
sysctl -w fs.file-max=65535
我們可以使用lsof命令查看某個進程到底打開了多少個文件
lsof -p 進程號
參考資料: