java sftp下载文件报错Caused by:com.jcraft.jsch.JSchException:session is down问题
java sftp下载文件报错Caused by:com.jcraft.jsch.JSchException:session is down
最近线上有一个下载文件的报错
Caused by: com.jcraft.jsch.JSchException: session is down
业务场景是我们使用jsch连接到三方提供的一个sftp服务器,每日定时下载所需的文件。
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.51</version>
</dependency>最近线上突然报了Caused by: com.jcraft.jsch.JSchException: session is down错误,导致文件都没有下载下来,这块因为是老业务很长时间都没动过,跟三方确认,他们也没有做过任何改动。
然后三方查询反馈,我们跟他们文件服务器的已建立的连接有很多,有500多个连接(产生了连接泄露)
netstat -ant|grep 三方ip | awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'
通过我分析我们判断,是已建立的连接数达到了最大值,后续再创建的连接都报错,无法连接。
紧急解决方案
我们通过重启服务,联接断开后,再重试业务,正常联接,文件也正常下载到。
事后我们,通过代码分析,确实有一些问题,在业务处理过程中,没有正常关闭连接。
导致随着时间推移,连接越来越多,最终达到上限,而不能正常连接。
这里给出一些使用建议
1.创建的连接,使用后应该立即关闭,要在finally代码块进行关闭连接
2.真正在使用阶段再创建连接,不要过早的创建,避免创建后因为不使用,又忘记关闭连接(我们线上就是这种情况)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java Stream中自定义Collector实现复杂数据收集的方法
Java Stream API中的Collector接口是一个强大的工具,它允许我们自定义数据收集、转换和聚合的过程,,本文介绍了Java Stream中自定义Collector实现复杂数据收集方法,需要的朋友可以参考下2024-08-08
在SpringBoot项目中使用Spring Cloud Sentinel实现流量控制
随着微服务架构的流行,服务之间的调用变得越来越频繁和复杂,流量控制是保障系统稳定性的重要手段之一,它可以帮助我们避免因过载而导致的服务不可用,本文将介绍如何在Spring Boot项目中使用Spring Cloud Sentinel来实现流量控制,需要的朋友可以参考下2024-08-08


最新评论