java - 由于 SocketTimeoutException,如何增加 apache SSHD 的 scpClient 的 ChannelOutputStream 的等待超时?
问题描述
使用 apache SSHD scp 客户端将文件从本地复制到远程时,出现以下错误:
flush(ChannelOutputStream[ChannelExec[id=0, recipient=0]-ClientSessionImpl[uxxxxxx@Hostname.domain.com/192.163.23.68:45018]] SSH_MSG_CHANNEL_DATA) failed (SocketTimeoutException) to wait for space of len=24576: waitForCondition(Window[client/remote](ChannelExec[id=0, recipient=0]-ClientSessionImpl[uxxxxxx@Hostname.domain.com/192.163.23.68:45018])) timeout exceeded: 30000
以下是我设置 SSHServer 和 ScpClient 的方式:
如何使用 apache SSHD ScpClient 上传/下载文件
此 SCPClient 在 linux 主机中运行,并且有多个 SSHServer 在 linux 和 windows 主机中运行。
我使用这个 SCPClient 将文件复制到 linux 和 win SSHServers。我正在做的是创建大约 20 个 akka 演员,负责复制到各自的远程主机,这些主机是 win 和 linux 的组合。所以这确实在复制时给本地主机带来了一些压力。
但是,只有在复制到运行 SSHServer 的某些 WIN 服务器时,我才会收到此错误。
我确实注意到复制速度很慢,但我不确定到底是什么问题以及如何解决?
我有一个模糊的想法,它必须对这个参数做一些事情:
但是我不确定在创建客户端时可以在哪里配置它?
任何指针都会有所帮助。
解决方案
我们可以使用 PropertyResolverUtils 来更新任何配置的属性
PropertyResolverUtils.updateProperty(sshClient, ChannelOutputStream.WAIT_FOR_SPACE_TIMEOUT, 120000);
推荐阅读
- assembly - MIPS CPU 如何掉电?
- python - Errno 98 自动脚本在重新启动时启动时地址已在使用中
- python - 在 Jupyter Notebook 上导入 Keras
- node.js - Docker Compose 导致 Error: listen EADDRINUSE: address already in use :::3003
- ansible - 编写 ansible 剧本的方法
- mat-table - 如何修复 angulat-mat-table 中的行高
- symfony - 在 API 平台安全注解中使用常量
- eclipse - 在 Cloudera HDP 沙盒上安装 Eclipse
- c++ - C++ Visual Studio C2027 和 C2011 错误
- python - 条件排序,在 pandas 的列上使用 groupby