java.net.SocketException: 打开的文件过多 (Socket creation failed)

一、分析定位
1. 日志分析


2. 导致的原因
报此错误是由于系统内核对进程打开文件个数的限制,默认为1024

3. 系统纬度查看
ulimit -a
1


二、解决方案
操作声明:修改配置使用root用户操作,应用启停使用应用用户操作

2.1. 编辑limits.conf
vim /etc/security/limits.conf
1
添加以下配置

* soft nofile 65535
* hard nofile 65535
1
2
2.2. 编辑profile
编辑profile配置文件

vim /etc/profile
1
在文档最后添加

ulimit -SHn 65535
1
vim /etc/security/limits.conf
1
2.3. 编辑rc.local
在/etc/rc.local 后增加一行

vim /etc/rc.local
1
ulimit -SHn 65535
1
2.4. 刷新环境变量
source /etc/profile
1
2.5. 重启应用
将应用进程停止,重新启动

2.6. 当前系统维度验证
ulimit -a
1


2.7. 当前应用进程验证
查看当前应用进程号

ps-ef|grep java
1
当前进程打开文件数量
cat /proc/171520/limits
1
2.8. 效果图


注意事项
1.应用一定要重启
2.系统维度和当前进程都需要验证

备注:系统维度配置生效,不代表当前进程维度配置生效

posted on 2022-10-02 15:57  卖小女孩的小男孩  阅读(959)  评论(0)    收藏  举报