2016-11-08 42 views
0

我使用Capistrano的部署Rails應用程序到約20臺服務器上部署多臺主機,它的工作原理確定,當服務器NUM〜10,當增加它>〜10,它不工作了不能Capistrano的

這裏錯誤

cap aborted! 
Errno::EPIPE: Broken pipe 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/net-ssh-3.2.0/lib/net/ssh/transport/server_version.rb:44:in `write' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/net-ssh-3.2.0/lib/net/ssh/transport/server_version.rb:44:in `negotiate!' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/net-ssh-3.2.0/lib/net/ssh/transport/server_version.rb:32:in `initialize' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/net-ssh-3.2.0/lib/net/ssh/transport/session.rb:84:in `new' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/net-ssh-3.2.0/lib/net/ssh/transport/session.rb:84:in `initialize' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/net-ssh-3.2.0/lib/net/ssh.rb:232:in `new' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/net-ssh-3.2.0/lib/net/ssh.rb:232:in `start' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/sshkit-1.11.2/lib/sshkit/backends/connection_pool.rb:59:in `call' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/sshkit-1.11.2/lib/sshkit/backends/connection_pool.rb:59:in `with' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/sshkit-1.11.2/lib/sshkit/backends/netssh.rb:155:in `with_ssh' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/sshkit-1.11.2/lib/sshkit/backends/netssh.rb:49:in `upload!' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/capistrano-3.6.1/lib/capistrano/tasks/git.rake:24:in `block (3 levels) in <top (required)>' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/sshkit-1.11.2/lib/sshkit/backends/abstract.rb:29:in `instance_exec' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/sshkit-1.11.2/lib/sshkit/backends/abstract.rb:29:in `run' 
/Users/khiem-nguyen/workspace/ruby/nenga-onepiece/cl-chef/deploy/vendor/bundle/ruby/2.3.0/gems/sshkit-1.11.2/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute' 
Tasks: TOP => git:check => git:wrapper 
The deploy has failed with an error: Broken pipe 
** Invoke deploy:failed (first_time) 
** Execute deploy:failed  


** DEPLOY FAILED 
** Refer to log/capistrano.log for details. Here are the last 20 lines:  


DEBUG Uploading /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh 0.0%  

DEBUG Uploading /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh 0.0%  

    INFO [7c256e12] Running /usr/bin/env chmod 700 /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh on onepiece-web07  

DEBUG [7c256e12] Command: (export RBENV_ROOT="$HOME/.rbenv/bin/rbenv" PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" ; /usr/bin/env chmod 700 /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh)  

    INFO Uploading /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh 100.0%  

    INFO Uploading /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh 100.0%  

    INFO [846397ba] Finished in 0.065 seconds with exit status 0 (successful).  

    INFO [3e8f8a49] Running /usr/bin/env chmod 700 /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh on onepiece-web03  

DEBUG [3e8f8a49] Command: (export RBENV_ROOT="$HOME/.rbenv/bin/rbenv" PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" ; /usr/bin/env chmod 700 /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh)  

    INFO [7c256e12] Finished in 0.037 seconds with exit status 0 (successful).  

    INFO [264aa0db] Running /usr/bin/env chmod 700 /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh on onepiece-web01  

DEBUG [264aa0db] Command: (export RBENV_ROOT="$HOME/.rbenv/bin/rbenv" PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" ; /usr/bin/env chmod 700 /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh)  

    INFO [a8720934] Finished in 0.265 seconds with exit status 0 (successful).  

    INFO [3e8f8a49] Finished in 0.043 seconds with exit status 0 (successful).  

    INFO [264aa0db] Finished in 0.038 seconds with exit status 0 (successful).  

DEBUG Uploading /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh 0.0%  

    INFO Uploading /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh 100.0%  

    INFO [3d959fa8] Running /usr/bin/env chmod 700 /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh on onepiece-web02  

DEBUG [3d959fa8] Command: (export RBENV_ROOT="$HOME/.rbenv/bin/rbenv" PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" ; /usr/bin/env chmod 700 /tmp/git-ssh-nenga-onepiece-production-khiem-nguyen.sh)  

    INFO [3d959fa8] Finished in 0.045 seconds with exit status 0 (successful). 

我認爲有什麼與ssh max connection有關?

CAP版本:3.6.1 SSH試劑盒:1.9.0

+0

我建議按照錯誤消息中的說明重新運行帶有'--trace'標誌的部署。這將提供有關錯誤發生位置的更多信息。請同時發佈您正在使用的Capistrano和SSHKit版本。 –

+0

我剛剛在這裏添加了跟蹤日誌和上限版本。請幫忙 – KhiemNS

回答

0

您可以嘗試在Git服務器的服務器上的/ etc/ssh/sshd_config中調整MaxStartups。

默認值是10:30:60,前10個限制這個。

MaxStartups 指定與sshd守護進程併發的未經身份驗證的最大併發連接數。其他連接將被丟棄,直到身份驗證成功或連接的LoginGraceTime 失效。缺省值爲10.

Alternatively, random early drop can be enabled by specifying the 
    three colon separated values "start:rate:full" (e.g., 
    "10:30:60"). sshd will refuse connection attempts with a proba- 
    bility of "rate/100" (30%) if there are currently "start" (10) 
    unauthenticated connections. The probability increases linearly 
    and all connection attempts are refused if the number of unau- 
    thenticated connections reaches "full" (60). 
0

SSHKit(在Capistrano的所述SSH層)使用連接池。這意味着它爲每個主機維護一個SSH連接。如果在增加主機時發現管道出現故障,我唯一能想到的就是防火牆或網關(即ssh代理)可能會限制同時連接的數量。

作爲解決方法,您可以嘗試禁用連接池。以下內容添加到您的deploy.rb

# Disable connection pool 
SSHKit::Backend::Netssh.pool.idle_timeout = 0 

這將使您的部署速度較慢,但​​它可能會解決連接錯誤。

+0

我發現原因是git服務器的連接限制。非常感謝 – KhiemNS