java sftp下载文件报错 Caused by: com.jcraft.jsch.JSchException: session is down

本文探讨了一次线上因JSCH连接数过多引发的sessionisdown错误,通过分析和解决代码中连接管理问题,提供了创建和关闭连接的最佳实践,以及如何避免连接泄露。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近线上有一个下载文件的报错: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.真正在使用阶段再创建连接,不要过早的创建,避免创建后因为不使用,又忘记关闭连接(我们线上就是这种情况)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值