¿Por qué falla git en push / fetch con "Demasiados files abiertos"?

Me encuentro con un problema con Git, donde recibo el siguiente post:

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

Los administradores del sistema han aumentado mi límite de files, pero no han corregido el problema. Además, no tengo problemas para crear nuevos files con vi.

Cuando bash presionar una nueva twig, recibo un post similar:

git push origin error de test_this_broken_git: no se puede crear la tubería: Demasiados files abiertos fatales: package de envío: no se puede desviar demultiplexor de banda lateral

¿Podría alguien responder exactamente por qué sucede esto? No realicé ningún cambio reciente en mi configuration de git y lo verifiqué manualmente.

Hay dos posts de error similares:

 EMFILE: Demasiados files abiertos
 ENFILE: Demasiados files abiertos en el sistema

Parece que está obteniendo EMFILE , lo que significa que se está excediendo el número de files para un process individual. Por lo tanto, verificar si vi puede abrir files es irrelevante, vi usará su propia tabla de files separada. Verifique sus límites con:

 $ ulimit -n
 1024

Entonces, en mi sistema, hay un límite de 1024 files abiertos en un solo process. No debería necesitar preguntarle al administrador de su sistema (no use el acrónimo SA, es demasiado opaco, si debe abreviar, use "sysadmin") para boost el límite.

Es posible que desee comprobar qué files Git abre ejecutando Git debajo de strace .

Esto podría ser un error en Git o en una biblioteca, o podría estar utilizando una versión anterior de algo, o podría ser algo más extraño. Pruebe primero para ver qué files abre, y verifique si Git cierra esos files.

Actualización de Hazok:

Después de usar las recomendaciones anteriores, resulta que el error fue causado por demasiados objects sueltos. Había demasiados objects sueltos porque git gc no se ejecutaba con la suficiente frecuencia.