【发布时间】:2018-02-11 07:27:44
【问题描述】:
我正在尝试使用 java 中的 5 个线程将文件连续上传到 SFTP 服务器, 在启动程序时正确上传文件,但一段时间后,
所有线程在尝试创建新会话时抛出 UnknownHostException 并且异常持续长达 5 到 10 分钟,经过一段时间程序正常工作后,我无法找到导致此异常的原因,
这是用于连接sftp的代码,
JSch jsch = new JSch();
jsch.setKnownHosts(host_file);
session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
例外:
at td.bdops.clupload.CARUpload.uploadZip(CARUpload.java:398)
at td.bdops.clupload.CARUpload.uploadZip(CARUpload.java:398)
Caused by: java.net.UnknownHostException: sftp.opsbank2-prod.tio.systems
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at com.jcraft.jsch.Util.createSocket(Util.java:343)
at com.jcraft.jsch.Session.connect(Session.java:215)
at com.jcraft.jsch.Session.connect(Session.java:183)
at td.bdops.util.FTPUtility.uploadAWSFTP(FTPUtility.java:227)
at td.bdops.util.FTPUtility.uploadAWSFTP(FTPUtility.java:247)
谁能解释一下,这个错误的根本原因是什么
【问题讨论】:
-
目标主机有没有可能宕机?
-
我猜一些打开的套接字没有正确关闭。我建议您先查看/更改程序。如果错误仍然存在,也许您可以尝试stackoverflow.com/q/30207301中的解决方案
-
@Xvolks 不,发生此异常时我仍然可以通过 FileZilla 访问主机。
-
如果有帮助,请确保接受答案。
标签: java linux amazon-ec2 sftp jsch