2013-03-13 20 views
6

Jestem napotyka problem z Git gdzie ja dostaję następujący komunikat:Dlaczego git nie na naciśnięcie/pobrać ze „zbyt wiele otwartych plików”

> git fetch 
error: cannot create pipe for ssh: Too many open files 
fatal: unable to fork 

Administratorzy systemu zwiększyły moją granicę pliku , ale to nie rozwiązało problemu. Ponadto nie mam problemu z tworzeniem nowych plików z vi.

Gdy próbuje wcisnąć nowy oddział, mam podobną wiadomość:

git push origin test_this_broken_git error: cannot create pipe: Too many open files fatal: send-pack: unable to fork off sideband demultiplexer

mógłby ktoś odpowiedzieć dokładnie, dlaczego tak się dzieje? Nie dokonałem żadnych ostatnich zmian w mojej konfiguracji git i zweryfikowałem to ręcznie.

Odpowiedz

9

Istnieją dwa podobne komunikaty o błędach:

 
EMFILE: Too many open files 
ENFILE: Too many open files in system 

Wygląda na to, że dostajesz EMFILE, co oznacza, że ​​liczba plików do indywidualnego procesu jest przekroczona. Dlatego sprawdzanie, czy vi może otwierać pliki, nie ma znaczenia - vi użyje własnej, osobnej tabeli plików. Sprawdź limity za pomocą:

 
$ ulimit -n 
1024 

W moim systemie istnieje limit 1024 otwartych plików w jednym procesie. Nie powinieneś pytać administratora systemu (nie używaj akronimu SA, jest zbyt nieprzejrzysty, jeśli musisz skrócić, użyj "sysadmin"), aby podnieść limit.

Możesz chcieć sprawdzić, które pliki otwiera Git, uruchamiając Git pod numerem strace.

Może to być błąd w Git lub w bibliotece, albo może to być stara wersja lub może to być coś bardziej dziwacznego. Najpierw spróbuj strace, aby zobaczyć, które pliki otwiera i sprawdź, czy Git zamyka te pliki.

Aktualizacja z Hazok:

Po zastosowaniu powyższych zaleceń, okazuje się, że błąd został spowodowany przez zbyt wielu luźnych przedmiotów. Było zbyt wiele luźnych obiektów, ponieważ git gc nie był wystarczająco często uruchamiany.

+0

Dzięki za wyjaśnienia i wskazówki. Nie wysłałem prośby do SA, próbują rozgryźć główną przyczynę i było to zbyt długie, więc chciałem zobaczyć, co sugerują guru na Stackoverflow: D Próbowałem strace i to jest zrzucanie tony stat, lstat, otwórz, przeczytaj, przeczytaj, zamknij polecenia na czymś, co wydaje się być znacznikiem, z którego wyszedłem z polecenia. – Hazok

+0

Czy mógłbyś zmienić swoją odpowiedź, aby podać ostateczną przyczynę i rozwiązanie w niej zawarte? Chciałbym dać ci pełny kredyt za to, ponieważ był to problem z Gitem i działający strace pomógł tonę. – Hazok

+0

To dobry pomysł, śmiało edytuj wpis. –

Powiązane problemy