java sftp下載文件報(bào)錯Caused by:com.jcraft.jsch.JSchException:session is down問題
java sftp下載文件報(bào)錯Caused by:com.jcraft.jsch.JSchException:session is down
最近線上有一個下載文件的報(bào)錯
Caused by: com.jcraft.jsch.JSchException: session is down
業(yè)務(wù)場景是我們使用jsch連接到三方提供的一個sftp服務(wù)器,每日定時下載所需的文件。
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.51</version>
</dependency>最近線上突然報(bào)了Caused by: com.jcraft.jsch.JSchException: session is down錯誤,導(dǎo)致文件都沒有下載下來,這塊因?yàn)槭抢蠘I(yè)務(wù)很長時間都沒動過,跟三方確認(rèn),他們也沒有做過任何改動。
然后三方查詢反饋,我們跟他們文件服務(wù)器的已建立的連接有很多,有500多個連接(產(chǎn)生了連接泄露)
netstat -ant|grep 三方ip | awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'
通過我分析我們判斷,是已建立的連接數(shù)達(dá)到了最大值,后續(xù)再創(chuàng)建的連接都報(bào)錯,無法連接。
緊急解決方案
我們通過重啟服務(wù),聯(lián)接斷開后,再重試業(yè)務(wù),正常聯(lián)接,文件也正常下載到。
事后我們,通過代碼分析,確實(shí)有一些問題,在業(yè)務(wù)處理過程中,沒有正常關(guān)閉連接。
導(dǎo)致隨著時間推移,連接越來越多,最終達(dá)到上限,而不能正常連接。
這里給出一些使用建議
1.創(chuàng)建的連接,使用后應(yīng)該立即關(guān)閉,要在finally代碼塊進(jìn)行關(guān)閉連接
2.真正在使用階段再創(chuàng)建連接,不要過早的創(chuàng)建,避免創(chuàng)建后因?yàn)椴皇褂茫滞涥P(guān)閉連接(我們線上就是這種情況)
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaWeb入門:HttpResponse和HttpRequest詳解
這篇文章主要介紹了Django的HttpRequest和HttpResponse對象,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2021-07-07
Spring Boot 中 RestTemplate 的核心用法指南
本文詳細(xì)介紹了RestTemplate的使用,包括基礎(chǔ)用法、進(jìn)階配置技巧、實(shí)戰(zhàn)案例以及最佳實(shí)踐建議,通過一個騰訊地圖路線規(guī)劃的案例,展示了如何在實(shí)際項(xiàng)目中應(yīng)用RestTemplate進(jìn)行服務(wù)間通信,感興趣的朋友跟隨小編一起看看吧2025-12-12
IDEA2023.3.4開啟SpringBoot項(xiàng)目的熱部署(圖文)
本文使用的開發(fā)工具是idea,使用的是springboot框架開發(fā)的項(xiàng)目,配置熱部署,可以提高開發(fā)效率,文中通過圖文介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02
SpringBoot整合SpringSecurity實(shí)現(xiàn)JWT認(rèn)證的項(xiàng)目實(shí)踐
本文會通過創(chuàng)建SpringBoot項(xiàng)目整合SpringSecurity,實(shí)現(xiàn)完整的JWT認(rèn)證機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Java基礎(chǔ)入門篇之邏輯控制練習(xí)題與猜數(shù)字游戲
猜數(shù)字游戲是一款經(jīng)典的游戲,該游戲說簡單也很簡單,說不簡單確實(shí)也很難,這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)入門篇之邏輯控制練習(xí)題與猜數(shù)字游戲的相關(guān)資料,需要的朋友可以參考下2023-06-06
mybatis使用collection嵌套查詢的實(shí)現(xiàn)
本文主要介紹了mybatis使用collection嵌套查詢的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
關(guān)于Java中使用jdbc連接數(shù)據(jù)庫中文出現(xiàn)亂碼的問題
這篇文章主要介紹了關(guān)于Java中使用jdbc連接數(shù)據(jù)庫中文出現(xiàn)亂碼的問題,默認(rèn)的編碼和數(shù)據(jù)庫表中的數(shù)據(jù)使用的編碼是不一致的,如果是中文,那么在數(shù)據(jù)庫中執(zhí)行時已經(jīng)是亂碼了,需要的朋友可以參考下2023-04-04
Java使用JDBC向MySQL數(shù)據(jù)庫批次插入10W條數(shù)據(jù)(測試效率)
使用JDBC連接MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)插入的時候,特別是大批量數(shù)據(jù)連續(xù)插入(100000),如何提高效率呢?今天小編通過本教程給大家介紹下2016-12-12

