我预计会从多个来源传输大量文件。我正在使用 apache commons pool 进行 SSH 连接池。
我的设置:
- 启动工人前往多个目的地
- 使用公共池向同一目的地打开多个 SSH 会话
- 让线程池负责执行
现在这一切都很好并且有效。但是,SSH 对并发会话的数量有限制,虽然该解决方案采用可配置的数量,但可能是已经有人登录或正在进行的其他应用程序或活动正在使用该限制中的多个会话。
现在 commons 可以处理失败的会话,但如果有需求,它可以尝试创建一个新会话,如果仍然无法创建新会话,它也会失败。该失败的作业存在问题,因为如果它再次排队,它可能仍会以失败的会话结束。
如果出现某种类型的故障,是否有任何方法可以动态限制连接池,以确保在 SSH 恶魔处于限制状态时,至少对于该执行我们不会继续尝试创建新会话?