使用 git 部署时出错 (dokku) - 超时/管道损坏
Error when deploying with git (dokku) - timeout / broken pipe
我用 dokku 和 digital ocean 有一段时间了,没有任何问题
我现在在使用以下命令部署到 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
首先,这个
git config http.postBuffer 209715200 / git config ssh.postBuffer 209715200
不会有任何区别,只要您通过 SSH(端口 22)推送:
packet_write_wait: Connection to some-ip port 22: Broken pipe
您的错误与配置无关,但在您和目标点之间某处的互联网 connection/low 带宽不佳,这会导致大数据包在 tcp 中被破坏并丢失。
它被广泛讨论 here。尝试:
1) 切换到 http(由于 header 开销较小,这将增加 brake 的大小限制)
2) 减少回购规模 (repack or gc --aggressive)
However,这将起作用,只有当你即将实现它时。如果你的连接真的很糟糕,你不能物理传输大的(也因为包含多个 headers)数据包,那么唯一的解决办法:
增加带宽(切换到 LAN、更改网络等)。
这可能是客户端和接收端的要求。
这通常发生在服务器内存不足时。您可以向服务器添加更多内存或设置交换 space。以下脚本将创建 2GB 的交换 space.
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
我用 dokku 和 digital ocean 有一段时间了,没有任何问题
我现在在使用以下命令部署到 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
首先,这个
git config http.postBuffer 209715200 / git config ssh.postBuffer 209715200
不会有任何区别,只要您通过 SSH(端口 22)推送:
packet_write_wait: Connection to some-ip port 22: Broken pipe
您的错误与配置无关,但在您和目标点之间某处的互联网 connection/low 带宽不佳,这会导致大数据包在 tcp 中被破坏并丢失。
它被广泛讨论 here。尝试:
1) 切换到 http(由于 header 开销较小,这将增加 brake 的大小限制)
2) 减少回购规模 (repack or gc --aggressive)
However,这将起作用,只有当你即将实现它时。如果你的连接真的很糟糕,你不能物理传输大的(也因为包含多个 headers)数据包,那么唯一的解决办法:
增加带宽(切换到 LAN、更改网络等)。 这可能是客户端和接收端的要求。
这通常发生在服务器内存不足时。您可以向服务器添加更多内存或设置交换 space。以下脚本将创建 2GB 的交换 space.
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