Git错误:“致命:远程端意外挂断”

时间:2014-06-27 21:55:28

标签: git bitbucket

这里有个奇怪的问题。当所有48台服务器尝试从Git中拔出时,我们不断通过远程主机关闭连接。直接运行.sh文件(具有git pull代码)时,没有问题,除非它与其他文件同时运行(*/5 cron作业)。

以下是.sh文件运行:

#!/bin/bash

BRANCH=master
BASE_DIR=/root/api
if [ ! -d $BASE_DIR ]; then
        mkdir -p $BASE_DIR
fi

cd $BASE_DIR

if [ ! -d .git ]; then
        git init
        git remote add origin git@bitbucket.org:deximedia/api_nodejs.git
        git pull origin $BRANCH
    forever start $BASE_DIR/call/index.js
elif [[ $(git ls-remote origin -h refs/heads/master | awk '{ print $1 }') != $(git rev-list --max-count=1 master) ]]; then
                git pull origin $BRANCH
                forever stop $BASE_DIR/call/index.js
        forever start $BASE_DIR/call/index.js
fi

以下是我们在所有服务器尝试运行上述.sh文件时看到的错误:

ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly
ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly

1 个答案:

答案 0 :(得分:0)

当我们的 CI 系统试图同时从一个简单的 ssh git 设置中获取多个分支时,我们遇到了同样的问题。我怀疑 ssh 服务器有问题导致连接中断。

对我来说,在 /etc/ssh/sshd_config 中设置 MaxStartups 解决了这个问题。我们系统的默认时间是 10:30:60。将其设置为 100 会禁用概率方法,并只允许 100 个并发连接启动。根据您希望支持的并发连接设置数量(例如,通过 SSH 从 git 并发获取的 CI 中启用的构建作业数量)根据需要进行调整。