Ошибка при развертывании с помощью git (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'

я попробую

  • установить ServerAliveInterval для клиента ssh
  • 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 

person Thierry Templier    schedule 15.07.2017    source источник
comment
Работает ли sshd в some-ip? Проверьте подключение к some-ip и к some-ip:22.   -  person phd    schedule 15.07.2017
comment
@phd большое спасибо за ответ! Да, я могу подключиться к некоторому IP-адресу с помощью ssh. При выполнении git push я сначала видел некоторый сетевой трафик, но через некоторое время он останавливался...   -  person Thierry Templier    schedule 15.07.2017
comment
Что такое количество времени -- секунды, минуты или часы?   -  person Jakuje    schedule 16.07.2017
comment
@Jakuje большое спасибо за ваш ответ! Это около 5/10 минут. К вашему сведению, я увеличил значение postBuffer и теперь получил ошибку тайм-аута...   -  person Thierry Templier    schedule 16.07.2017
comment
Я предполагаю, что есть запись конфигурации, которую нужно изменить, но я не знаю, какую именно, и если это ssh или git/клиент или сервер...   -  person Thierry Templier    schedule 16.07.2017
comment
Сколько у тебя памяти? В документах упоминается, что нехватка памяти может привести к ошибкам git push: dokku.viewdocs.io/dokku/getting-started/advanced-installation/   -  person blurrcat    schedule 21.07.2017
comment
@blurrcat большое спасибо за ответ! У меня 1Го. У меня была эта проблема, когда я начал использовать DigitalOcean / Dokku... ;-)   -  person Thierry Templier    schedule 21.07.2017


Ответы (2)


Во-первых, это

    git config http.postBuffer 209715200 / git config ssh.postBuffer 209715200

Не имеет значения, если вы используете SSH (порт 22):

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

Ваша ошибка не имеет ничего общего с конфигурацией, а связана с плохим интернет-соединением/низкой пропускной способностью где-то между вами и точкой назначения, что приводит к разрыву и потере пакетов большого размера в tcp.

Это широко обсуждается здесь. Пытаться:

1) переключение на http (это увеличит лимит размера для торможения из-за немного меньших накладных расходов на заголовок)

2) уменьшение размера репо (repack или gc --aggressive)

Однако это сработает, только если вы находитесь на грани достижения этого. Если ваше соединение действительно плохое, вы не можете физически передавать большие (также из-за нескольких заголовков) пакеты данных, тогда единственное исправление:

Увеличьте пропускную способность (переключитесь на локальную сеть, измените сеть и т. д.). Это может быть требованием как для клиента, так и для принимающей стороны.

person iantonuk    schedule 23.07.2017

Обычно это происходит, когда серверу не хватает памяти. Вы можете либо добавить больше оперативной памяти на свой сервер, либо настроить пространство подкачки. Следующий сценарий создаст 2 ГБ пространства подкачки.

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 Коллекция и Очистка кеша приложения.

person Seth Bergman    schedule 11.11.2018