2012-03-28 25 views
24

Soy nuevo en git. Estoy quiere empujar una gran comprometerse a un servidor remoto, pero el problema es cuando usogit push fatal: no se puede crear el hilo: Recurso no disponible temporalmente

git push origin master 

se devolverá el error

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 

Entonces, ¿hay alguna forma de configurar el hilo máx usar para Compresión Delta.

Gracias por la ayuda,

Yuan Chen

+0

comandos que se pueden ejecutar para limitar la cantidad de memoria que el embalaje puede tomar por la tala en el sistema remoto 'git config --global pack.windowMemory "100"' 'config git pack.packSizeLimit --global" 100m "' 'git config --global pack.threads" 1 "' – Adnan

Respuesta

2

"unable to create thread: Resource temporarily unavailable" significa un problema con el servidor remoto (como no hay más memoria disponible).

En cuanto delta, dispone de las siguientes config para modificar:

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.

la pregunta para "Git pull fails with bad pack header error" hace referencia a otros pack configuraciones relacionados con la PI.

2

También me encontré con este error. Para simplificar, este error se produce porque desea copiar un archivo de 100 mb en un disco duro con espacio libre de 50 mb (o menos). Para solucionar este problema, SSH en el servidor y ejecute los siguientes comandos:

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

Debe ser 'pack.packSizeLimit' not' pack.SizeLimit'. – yig

75

El error: "fatal: no se puede crear hilo: Recurso temporalmente no disponible" sugiere fuertemente que ha quedado sin memoria en el servidor, el cual puede suceder si tiene un repositorio con muchos archivos grandes, lo que puede ocasionar que el nuevo empaque requiera mucha memoria o memoria virtual limitada, ya sea en general o solo para esa cuenta debido a la configuración de ulimit.

De todas formas, he aquí los comandos que puede funcionar para limitar la cantidad de memoria que el embalaje puede tomar por la tala en el sistema remoto (como el usuario que Git se ejecuta como) y escribiendo los siguientes comandos:

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

Esperanza esto funciona.

+15

Muchas soluciones de alojamiento compartido limitan los hilos específicamente. Generalmente, reducir esto a <10 únicamente con el último comando en esta respuesta resuelve el problema. – Qix

+1

Tuve este problema en mi host compartido tratando de 'git push' a distancia. Configurando 'pack.threads" 10 "' lo arreglé por mi. Tuve un problema similar cuando traté de ejecutar 'git gc' cuando llegó a la etapa de recompra. La misma solución. Aclamaciones. –

+1

Si su servidor utiliza el protocolo http inteligente, es posible que no pueda establecer una configuración global para el proceso. En su lugar, 'cd' en el directorio del repositorio de git y ejecuta los mismos comandos sin' --global'. – yig

Cuestiones relacionadas