使用git(dokku)部署时出错 - 超时/损坏管道

时间:2017-07-15 13:38:30

标签: git ssh dokku

我现在使用dokku和数字海洋一段时间没有任何问题

现在使用以下命令部署到dokku时遇到问题:

git remote add dokku dokku@some-ip:myapp
git push dokku develop:master

我有以下问题:

Counting objects: 528, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (509/509), done.
packet_write_wait: Connection to some-ip port 22: Broken pipe
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'dokku@some-ip:myapp'

我试试

  • 为ssh客户端设置ServerAliveInterval
  • git config http.postBuffer 209715200 / git config ssh.postBuffer 209715200

但它不起作用。我认为这是因为要推送的内容的大小有点高......

感谢您的帮助!

更新

postBuffer选项设置为值209715200后,出现以下错误:

Counting objects: 528, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (353/353), done.
Timeout, server some-ip not responding.38.00 KiB/s   
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'dokku@some-ip:myapp'

上传暂停前的最后一次进度提示是:

Writing objects:  87% (466/531), 33.85 MiB | 120.00 KiB/s 

2 个答案:

答案 0 :(得分:3)

首先,这个

    git config http.postBuffer 209715200 / git config ssh.postBuffer 209715200
只要您推动SSH(端口22),

不会有任何区别:

packet_write_wait: Connection to some-ip port 22: Broken pipe

您的错误与配置无关,但是您和目标点之间的互联网连接不良/带宽较低,导致大型数据包在tcp中丢失并丢失。

它广泛讨论了here。尝试:

1)切换到http(由于头部开销略小,这会增加制动器的大小限制)

2)减少回购协议大小(repack or gc --aggressive)

However,只有当你即将到达那里时,这才有效。如果您的连接非常糟糕,那么您无法进行物理传输(也因为包含多个标头)数据包,那么这是唯一的解决方法:

增加带宽(切换到LAN,更改网络等)。  这可能是客户端和接收端的要求。

答案 1 :(得分:0)

通常在服务器内存不足时发生。您可以将更多内存添加到服务器或设置交换空间。以下脚本将创建2GB的交换空间。

sudo install -o root -g root -m 0600 /dev/null /swapfile
dd if=/dev/zero of=/swapfile bs=1k count=2048k
mkswap /swapfile
swapon /swapfile
echo "/swapfile       swap    swap    auto      0       0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

也尝试Git Garbage CollectionClearing Application cache