13

好吧,所以,我在网上四处查看,看起来并没有很多其他人有这个问题,但也许我们正在做的事情有其他问题。

我已经设法将其提炼成我认为有用的测试用例:

配置/部署.rb:

## Excerpt
task :big_delay, :roles => :web do
  run "sleep 480"
  run "echo Meow Meow Meow"
end 

还有愚蠢的脚本.sh:

#!/bin/sh
ssh foo 'sleep 480; echo Meow Meow Meow'

其中 foo 是我们部署到的同一服务器的名称。

当我运行这两个时,它应该连接到另一个框,8 分钟内什么都不做,然后吐出一些无用的文本并完成。

愚蠢的脚本有效,上限任务失败。我看到远程命令以 ps xf 结束,但 cap 似乎不再注意到了。如果 sleep 是 20 而不是 240,则 cap 任务可以正常工作。

显然这个任务是超级没用的,但我们确实在部署时运行了昂贵的东西来触发这个,我已经这样做了,以排除对 ssh 的任何指责。

另一个数据点,如果我们 ssh 进入盒子并将代码放在那里,然后从那里运行 cap deploy,那么它工作正常。

所以......似乎在 ssh 和 capistrano 之间发生了一些奇怪的相互作用。想法?

4

1 回答 1

11

按照 choover 的建议,在服务器上的 /etc/ssh/sshd_config 中设置 ClientAliveInterval 和 ClientAliveCountMax。在我进行更改之前,我在部署时遇到了与“assets:precompile”完全相同的问题。

于 2012-08-03T16:12:08.197 回答