在开发中遇到了部署到服务器的抛出这个异常,直接导致了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 进程号
参考资料: