2012-03-28 9 views
24

Jestem nowy w git. jestem chcą pchnąć duża zobowiązać się do zdalnego serwera, ale problem jest kiedy używamgit push fatal: nie można utworzyć wątku: Zasoby tymczasowo niedostępne

git push origin master 

zwróci błąd

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 

Tak jest w każdym razie mogę ustawić max wątek użyj do kompresji Delta.

Dzięki za pomoc,

Yuan Chen

+0

polecenia można uruchomić, aby ograniczyć ilość pamięci, która może podjąć pakowania, logując się do systemu zdalnego 'git config --global pack.windowMemory„100m”' ' git config --global pack.packSizeLimit" 100m "' 'git config --global pack.threads" 1 "' – Adnan

Odpowiedz

2

"unable to create thread: Resource temporarily unavailable" oznacza problem z serwera zdalnego (jak nie więcej dostępnej pamięci).

chodzi delta, dostępne są następujące config Wykręcanie:

pack.deltaCacheSize 

The maximum memory in bytes used for caching deltas in git-pack-objects(1) before writing them out to a pack.
This cache is used to speed up the writing object phase by not having to recompute the final delta result once the best match for all objects is found.
Repacking large repositories on machines which are tight with memory might be badly impacted by this though, especially if this cache pushes the system into swapping.
A value of 0 means no limit.
The smallest size of 1 byte may be used to virtually disable this cache. Defaults to 256 MiB.

pack.deltaCacheLimit 

The maximum size of a delta, that is cached in git-pack-objects(1).
This cache is used to speed up the writing object phase by not having to recompute the final delta result once the best match for all objects is found. Defaults to 1000.

SO pytanie "Git pull fails with bad pack header error" referencje inne pack związane z modelem configs.

2

Natknąłem się również na ten błąd. Aby to ułatwić, ten błąd występuje, ponieważ chcesz skopiować plik 100 MB na dysk twardy o wolnej przestrzeni 50 MB (lub mniej). Aby rozwiązać ten problem, SSH do serwera i uruchom następujące polecenia:

git config --global pack.windowMemory "100m" 
git config --global pack.packSizeLimit "100m" 
+2

Powinno to być 'pack.packSizeLimit', a nie' pack.SizeLimit'. – yig

75

Błąd: „krytyczny: nie można utworzyć wątku: Zasoby chwilowo niedostępny” silnie sugeruje pan zabrakło pamięci na serwerze, który może się zdarzyć, jeśli masz repozytorium z dużą ilością dużych plików, które może spowodować przepakowanie, aby wziąć dużo pamięci lub ograniczoną pamięć wirtualną - albo ogólnie, albo tylko dla tego konta z powodu ustawienia ulimit.

Tak czy inaczej, oto komendy można uruchomić, aby ograniczyć ilość pamięci pakowania może podjąć po zalogowaniu się do systemu zdalnego (jako użytkownik, który git działa jako) i wpisywać te komendy:

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

Nadzieja to działa.

+15

Wiele współdzielonych rozwiązań hostingowych ogranicza w szczególności wątki. Zwykle obniżenie tego poziomu do <10 wyłącznie za pomocą ostatniego polecenia w tej odpowiedzi rozwiązuje problem. – Qix

+1

Miałem ten problem na moim współdzielonym hoście, próbując "git push" na zdalny. Ustawienie 'pack.threads" 10 "' naprawiono dla mnie. Miałem podobny problem, gdy próbowałem uruchomić 'git gc', gdy dotarł do etapu ponownego pakowania. Ta sama poprawka. Twoje zdrowie. –

+1

Jeśli twój serwer korzysta z protokołu inteligentnego http, możesz nie być w stanie ustawić globalnej konfiguracji dla procesu. Zamiast tego wpisz 'cd' w katalogu repozytorium git i uruchom te same komendy bez' --global'. – yig