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

 更新时间:2024年11月29日 15:27:47   作者:kevin_mails  
文章讲述了作者在日常工作中遇到的JSch连接问题,经过分析发现是由于连接泄露导致的,作者提出了解决方案,并给出了使用建议:1.在finally代码块中关闭连接;2.在真正使用阶段再创建连接,避免创建后不使用又忘记关闭连接

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JavaWeb入门:HttpResponse和HttpRequest详解

    JavaWeb入门:HttpResponse和HttpRequest详解

    这篇文章主要介绍了Django的HttpRequest和HttpResponse对象,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Spring Boot 中 RestTemplate 的核心用法指南

    Spring Boot 中 RestTemplate 的核心用法指南

    本文详细介绍了RestTemplate的使用,包括基础用法、进阶配置技巧、实战案例以及最佳实践建议,通过一个腾讯地图路线规划的案例,展示了如何在实际项目中应用RestTemplate进行服务间通信,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • IDEA2023.3.4开启SpringBoot项目的热部署(图文)

    IDEA2023.3.4开启SpringBoot项目的热部署(图文)

    本文使用的开发工具是idea,使用的是springboot框架开发的项目,配置热部署,可以提高开发效率,文中通过图文介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • SpringBoot整合SpringSecurity实现JWT认证的项目实践

    SpringBoot整合SpringSecurity实现JWT认证的项目实践

    本文会通过创建SpringBoot项目整合SpringSecurity,实现完整的JWT认证机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java基础入门篇之逻辑控制练习题与猜数字游戏

    Java基础入门篇之逻辑控制练习题与猜数字游戏

    猜数字游戏是一款经典的游戏,该游戏说简单也很简单,说不简单确实也很难,这篇文章主要给大家介绍了关于Java基础入门篇之逻辑控制练习题与猜数字游戏的相关资料,需要的朋友可以参考下
    2023-06-06
  • java8到java15的新功能简介

    java8到java15的新功能简介

    这篇文章主要介绍了java8到java15的新功能的相关资料,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-12-12
  • Java 反射机制的实例详解

    Java 反射机制的实例详解

    这篇文章主要介绍了Java 反射机制的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握反射机制,需要的朋友可以参考下
    2017-10-10
  • mybatis使用collection嵌套查询的实现

    mybatis使用collection嵌套查询的实现

    本文主要介绍了mybatis使用collection嵌套查询的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 关于Java中使用jdbc连接数据库中文出现乱码的问题

    关于Java中使用jdbc连接数据库中文出现乱码的问题

    这篇文章主要介绍了关于Java中使用jdbc连接数据库中文出现乱码的问题,默认的编码和数据库表中的数据使用的编码是不一致的,如果是中文,那么在数据库中执行时已经是乱码了,需要的朋友可以参考下
    2023-04-04
  • Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?今天小编通过本教程给大家介绍下
    2016-12-12

最新评论