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
業(yè)務(wù)場景是我們使用jsch連接到三方提供的一個sftp服務(wù)器,每日定時下載所需的文件。
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.51</version> </dependency>
最近線上突然報了Caused by: com.jcraft.jsch.JSchException: session is down錯誤,導(dǎo)致文件都沒有下載下來,這塊因為是老業(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ù)達到了最大值,后續(xù)再創(chuàng)建的連接都報錯,無法連接。
緊急解決方案
我們通過重啟服務(wù),聯(lián)接斷開后,再重試業(yè)務(wù),正常聯(lián)接,文件也正常下載到。
事后我們,通過代碼分析,確實有一些問題,在業(yè)務(wù)處理過程中,沒有正常關(guān)閉連接。
導(dǎo)致隨著時間推移,連接越來越多,最終達到上限,而不能正常連接。
這里給出一些使用建議
1.創(chuàng)建的連接,使用后應(yīng)該立即關(guān)閉,要在finally代碼塊進行關(guān)閉連接
2.真正在使用階段再創(chuàng)建連接,不要過早的創(chuàng)建,避免創(chuàng)建后因為不使用,又忘記關(guān)閉連接(我們線上就是這種情況)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot內(nèi)置的tomcat支持最大的并發(fā)量問題
這篇文章主要介紹了springboot內(nèi)置的tomcat支持最大的并發(fā)量問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03SpringBoot配置ShedLock分布式定時任務(wù)
ShedLock是一個在分布式環(huán)境中使用的定時任務(wù)框架,這篇文章主要介紹了SpringBoot配置ShedLock分布式定時任務(wù),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Java Stream中自定義Collector實現(xiàn)復(fù)雜數(shù)據(jù)收集的方法
Java Stream API中的Collector接口是一個強大的工具,它允許我們自定義數(shù)據(jù)收集、轉(zhuǎn)換和聚合的過程,,本文介紹了Java Stream中自定義Collector實現(xiàn)復(fù)雜數(shù)據(jù)收集方法,需要的朋友可以參考下2024-08-08在SpringBoot項目中使用Spring Cloud Sentinel實現(xiàn)流量控制
隨著微服務(wù)架構(gòu)的流行,服務(wù)之間的調(diào)用變得越來越頻繁和復(fù)雜,流量控制是保障系統(tǒng)穩(wěn)定性的重要手段之一,它可以幫助我們避免因過載而導(dǎo)致的服務(wù)不可用,本文將介紹如何在Spring Boot項目中使用Spring Cloud Sentinel來實現(xiàn)流量控制,需要的朋友可以參考下2024-08-08java學(xué)習(xí)DongTai被動型IAST工具部署過程
被動型IAST被認(rèn)為是DevSecOps測試階段實現(xiàn)自動化安全測試的最佳工具,而就在前幾天,洞態(tài)IAST正式開源了,這對于甲方構(gòu)建安全工具鏈來說,絕對是一個大利好2021-10-10