我使用tSSH组件调用远程服务器上的docker-image。 该docker映像将创建一个Json文件,该文件将指示该过程的结束。 但是,在我的工作中,我还有一个并行过程来检查要使用SCP复制到本地Talend计算机的文件的可用性。 很简单,我在与docker-image相同的机器上编写了一个脚本,该脚本将检查文件是否可用,并且在用Talend调用该文件时会写类似的内容:
就像我提到的那样,请注意,此测试与主脚本并行运行。
我的joblet(这是一个joblet,因为我有很多脚本可以这样运行):
如您所见,有一个tParallelize可以同时运行两个进程。
正如我所说,我每次都有许多脚本以相同的逻辑以这种方式运行,并且除非主脚本执行不需要花费太长时间,否则它可以正常工作。
tSSh冻结并阻止了整个Java作业。并行化的底部响应,并将json文件复制到本地计算机,但不复制到上部。
未配置超时,并且通过触发OnComponentOK链接将“错误”和“标准输出”都重定向到FullLogFile。
如果有帮助,那么在最坏的情况下,执行主脚本(会导致问题)可以持续100个小时,而在最佳情况下则可以持续几个小时(7、8或9)。其他脚本只需几分钟即可执行,这就是为什么我从来没有遇到问题的原因。
假设冻结源于“错误”和“ stdout”的重定向,则服务器日志可以达到3Mo(但是这次服务器上的日志大小仅为0,7Mo并会阻塞)?谁知道?
在互联网上搜索时,我发现自己并不是唯一遇到此麻烦的人:
https://community.talend.com/t5/Design-and-Development/tssh-timeout-process-blocked/td-p/60402
任何帮助或相同的经验分享将不胜感激。
谢谢。
答案 0 :(得分:0)
来自另一个线程的相同答案。
问题可能与ssh服务器端的keepalive有关。
连接是否通过防火墙或 vpn?
您可以尝试使用简单的 ssh 客户端连接,如果一个小时后您没有在客户端输入任何内容而断开连接,那是因为网络设备关闭了连接。
更多信息在这里:)
https://unix.stackexchange.com/questions/200239/how-can-i-keep-my-ssh-sessions-from-freezing