git push fatal: невозможно создать поток: ресурс временно недоступен - PullRequest
35 голосов
/ 28 марта 2012

Я новичок в Git.Я хочу отправить большой коммит на удаленный сервер, но проблема в том, что когда я использую

git push origin master

, он возвращает ошибку

Counting objects: 5009, done.
Delta compression using up to 16 threads.
fatal: unable to create thread: Resource temporarily unavailable
error: pack-objects died with strange error

Так что в любом случае я могу установитьмаксимальное использование потока для сжатия Delta.

Спасибо за помощь,

Юань Чен

Ответы [ 3 ]

112 голосов
/ 22 февраля 2014

Ошибка: «Фатально: невозможно создать поток: Ресурс временно недоступен» настоятельно рекомендует вам исчерпать память на сервере, что может произойти, если у вас есть хранилище с большим количеством больших файлов, что может привести купаковка занимает много памяти или ограниченную виртуальную память - либо вообще, либо только для этой учетной записи из-за настройки ulimit.

В любом случае, вот команды, которые вы можете запустить, чтобы ограничить объем памяти, упаковываемыйможет потребоваться, войдя в удаленную систему (как пользователь, который запускает git) и набрав эти команды:

git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m"
git config --global pack.threads "1"

Надеюсь, это работает.

4 голосов
/ 22 мая 2012

Я тоже наткнулся на эту ошибку.Чтобы упростить задачу, эта ошибка возникает из-за того, что вы хотите скопировать файл размером 100 МБ в жесткий диск со свободным пространством 50 МБ (или меньше).Чтобы это исправить, введите SSH на сервер и выполните следующие команды:

git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m"
2 голосов
/ 28 марта 2012

"unable to create thread: Resource temporarily unavailable" означает проблему с удаленным сервером (как будто больше нет доступной памяти).

Что касается дельты, у вас есть следующие настройки config :

pack.deltaCacheSize

Максимальный объем памяти в байтах, используемый для кэширования дельт в git-pack-objects (1) перед записью их в пакет.
Этот кэш используется для ускорения фазы записи объекта, так как нет необходимости пересчитывать окончательный дельта-результат после того, как будет найдено наилучшее совпадение для всех объектов.
Однако перепаковка больших репозиториев на компьютерах с ограниченным объемом памяти может сильно повлиять на это, особенно если этот кэш подталкивает систему к подкачке.
Значение 0 означает отсутствие ограничений.
Наименьший размер в 1 байт может быть использован для виртуального отключения этого кэша. По умолчанию 256 МБ.

pack.deltaCacheLimit

Максимальный размер дельты, которая кэшируется в git-pack-objects (1).
Этот кэш используется для ускорения фазы записи объекта, так как нет необходимости пересчитывать окончательный результат дельты после того, как будет найдено наилучшее совпадение для всех объектов. По умолчанию 1000.

Вопрос SO " Сбой Git Pull с ошибкой заголовка неверного пакета " ссылается на другие pack связанные конфигурации.

...