首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >capistrano部署错误-新手

capistrano部署错误-新手
EN

Stack Overflow用户
提问于 2013-10-31 02:00:19
回答 2查看 968关注 0票数 1

我是ruby新手,目前在部署capistrano时遇到问题。在我得到的错误下面。

代码语言:javascript
复制
cap aborted!
Operation timed out - connect(2)
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/net-ssh-2.7.0/lib/net/ssh/transport/session.rb:67:in `initialize'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/net-ssh-2.7.0/lib/net/ssh/transport/session.rb:67:in `open'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/net-ssh-2.7.0/lib/net/ssh/transport/session.rb:67:in `block in initialize'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/net-ssh-2.7.0/lib/net/ssh/transport/session.rb:67:in `initialize'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/net-ssh-2.7.0/lib/net/ssh.rb:200:in `new'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/net-ssh-2.7.0/lib/net/ssh.rb:200:in `start'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:156:in `ssh'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:109:in `block in _execute'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:106:in `tap'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:106:in `_execute'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:54:in `execute'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/sshkit-1.0.0/lib/sshkit/backends/abstract.rb:75:in `within'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0/lib/capistrano/tasks/git.rake:44:in `block (3 levels) in <top (required)>'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:42:in `instance_exec'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:42:in `run'
/Users/stefydu/.rvm/gems/ruby-2.0.0-p247/gems/sshkit-1.0.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
Tasks: TOP => git:create_release => git:update
(See full trace by running task with --trace)
EN

回答 2

Stack Overflow用户

发布于 2013-11-14 20:57:27

这不是一个解决方案,而是一个解决方法的解释:

Capistrano 3和它的sshkit不重用现有的SSH连接,而是为每个任务启动一个新的连接(参见https://github.com/capistrano/sshkit/issues/34)。

一些服务器,各自的防火墙,似乎阻止新的连接请求,如果它们变得很快或如果有太多的开放连接。

解决方案:

  • 修复SSHKit/Capistrano重用您的服务器/防火墙以允许大量并行ssh会话(对于一个简单的rails应用程序,大约15个)
  • 使用下面的
  • (免责声明:不,不要使用它):

我们将扩展(monkeypatch) gems/sshkit-1.1.0/lib/sshkit/backends/netssh.rb.中的execute方法这可以通过Capfile完成:

代码语言:javascript
复制
# Overwrite execute method to avoid timeouts
class SSHKit::Backend::Netssh
  def execute(*args)
    _execute(*args).success?
  rescue Errno::ETIMEDOUT
    @tries ||= 0
    raise "Nope, no way" if @tries > 5
    puts "Timeout. yeah. Try it again (#{@tries})" 
    sleep 5
    @tries += 1
    execute(*args)
    end
end

这给了服务器一个呼吸的机会...

票数 0
EN

Stack Overflow用户

发布于 2013-12-30 22:33:02

Capistrano现在使用SSH的连接池:https://github.com/capistrano/sshkit/pull/70

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19690466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档