Spring Boot 3.x SFTP集成出现Channel is being closed异常求助
Spring Boot 3.x SFTP集成出现Channel is being closed异常求助
大家好,我在基于Spring Boot 3.x做SFTP集成开发时,碰到了一个头疼的问题——频繁抛出Channel is being closed异常,直接导致文件传输失败。具体的异常栈信息如下:
Caused by: org.apache.sshd.common.SshException: Channel is being closed at org.apache.sshd.sftp.client.impl.DefaultSftpClient.receive(DefaultSftpClient.java:319) at org.apache.sshd.sftp.client.impl.AbstractSftpClient.response(AbstractSftpClient.java:181) at org.apache.sshd.sftp.client.impl.AbstractSftpClient.rpc(AbstractSftpClient.java:169) at org.apache.sshd.sftp.client.impl.AbstractSftpClient.checkHandle(AbstractSftpClient.java:290) at org.apache.sshd.sftp.client.impl.AbstractSftpClient.open(AbstractSftpClient.java:589) at org.apache.sshd.sftp.client.impl.SftpOutputStreamAsync.<init>(SftpOutputStreamAsync.java:63) at org.apache.sshd.sftp.client.impl.AbstractSftpClient.write(AbstractSftpClient.java:1213) at org.apache.sshd.sftp.client.SftpClient.write(SftpClient.java:940) at org.apache.sshd.sftp.client.SftpClient.write(SftpClient.java:936)
这个错误并不是每次都会出现,目前还没摸清楚稳定复现的规律,想请教下社区里的朋友们:有没有遇到过类似的问题?或者有哪些排查方向可以推荐?
我自己先列几个可能的排查点,也欢迎大家补充:
- 检查SFTP服务器端的连接超时、会话超时配置,是不是服务器主动关闭了空闲的连接?
- 确认Spring Boot中SFTP客户端的连接池配置(如果使用了连接池),比如最大连接数、空闲回收时间是否合理,有没有连接泄漏的情况?
- 查看文件传输时的操作耗时,是不是因为单次操作时间过长,超过了服务器的会话超时阈值?
- 排查是否存在多线程共享同一个SFTP连接的情况,毕竟SFTP连接大多不是线程安全的,并发操作很容易引发这类异常。
- 尝试升级项目依赖的Apache SSHD版本,看看是不是框架已知的bug导致的?
备注:内容来源于stack exchange,提问作者Yaroslav Ambrozyak
相关产品推荐
相关产品推荐

