【问题标题】:Error when deploying with git (dokku) - timeout / broken pipe使用 git (dokku) 部署时出错 - 超时/损坏的管道
【发布时间】:2017-12-20 11:48:07
【问题描述】:

我在数字海洋中使用了一段时间的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 

【问题讨论】:

  • sshd 是否在 some-ip 运行?检查与some-ipsome-ip:22 的连接。
  • @phd 非常感谢您的回答!是的,我可以使用 ssh 连接到一些 IP。在做 git push 的时候,一开始我看到了一些网络流量,但是过了一段时间就停止了……
  • 什么是时间量 -- 秒、分钟或小时?
  • @Jakuje 非常感谢您的回答!大约 5 / 10 分钟。仅供参考,我增加了 postBuffer 值,现在出现超时错误...
  • 我猜有一个配置条目要更改,但我不知道是哪个以及它是 ssh 还是 git / 客户端或服务器...

标签: git ssh dokku


【解决方案1】:

首先,这个

    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、更改网络等)。 这可能是客户端和接收端的要求。

【讨论】:

    【解决方案2】:

    这通常发生在服务器内存不足时。您可以向服务器添加更多内存或设置交换空间。以下脚本将创建 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

    【讨论】:

      猜你喜欢
      • 2014-01-25
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 2014-07-04
      相关资源
      最近更新 更多