【发布时间】:2015-02-10 17:44:45
【问题描述】:
我们遇到 ssh 级别连接错误的问题,似乎是超时,在长时间部署期间运行我们的 capistrano 部署和大型 rails db 迁移任务。我们唯一的帮助是将这些移动到我们在部署后手动运行的 rake 任务中,这并不理想。在 ruby/rails 堆栈内部或外部有什么想法可以确保 ssh 连接保持活跃吗?
Errno::ECONNRESET, Connection reset by peer
完整的跟踪:
** [deploy:update_code] exception while rolling back: Errno::ECONNRESET, Connection reset by peer - recvfrom(2)
/Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/net-ssh-2.9.2/lib/net/ssh/buffered_io.rb:65:in `recv': Connection reset by peer - recvfrom(2) (Errno::ECONNRESET)
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/net-ssh-2.9.2/lib/net/ssh/buffered_io.rb:65:in `fill'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/net-ssh-2.9.2/lib/net/ssh/connection/session.rb:237:in `block in postprocess'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/net-ssh-2.9.2/lib/net/ssh/connection/session.rb:233:in `each'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/net-ssh-2.9.2/lib/net/ssh/connection/session.rb:233:in `postprocess'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/capistrano-2.15.5/lib/capistrano/processable.rb:33:in `block in process_iteration'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/capistrano-2.15.5/lib/capistrano/processable.rb:45:in `block in ensure_each_session'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/capistrano-2.15.5/lib/capistrano/processable.rb:43:in `each'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/capistrano-2.15.5/lib/capistrano/processable.rb:43:in `ensure_each_session'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/capistrano-2.15.5/lib/capistrano/processable.rb:31:in `process_iteration'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/capistrano-2.15.5/lib/capistrano/command.rb:171:in `block (2 levels) in process!'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/capistrano-2.15.5/lib/capistrano/command.rb:170:in `loop'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/capistrano-2.15.5/lib/capistrano/command.rb:170:in `block in process!'
from /Users/Ben/.rvm/rubies/ruby-1.9.3-p550/lib/ruby/1.9.1/benchmark.rb:295:in `realtime'
from /Users/Ben/.rvm/gems/ruby-1.9.3-p550@/gems/capistrano-2.15.5/lib/capistrano/command.rb:169:in `process!'
【问题讨论】:
-
注意两件事,我作为我的 Mac OSX 用户尝试将 .ssh/config 文件放入:Host * ServerAliveInterval 120 并且我也在使用 net-ssh (>= 2.9.2) ruby我认为在部署期间使用的 gem
标签: ruby-on-rails ruby ssh capistrano