71 votes

git push fatal : unable to create thread : Ressource temporairement indisponible

Je suis nouveau sur git. Je veux pousser un gros commit vers un serveur distant mais le problème est que lorsque j'utilise

git push origin master

il renvoie l'erreur

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

Existe-t-il un moyen de définir l'utilisation maximale des fils pour la compression Delta ?

Merci pour votre aide,

Yuan Chen

1 votes

Commandes que vous pouvez exécuter pour limiter la quantité de mémoire que le conditionnement peut prendre en se connectant au système distant git config --global pack.windowMemory "100m" git config --global pack.packSizeLimit "100m" git config --global pack.threads "1"

208voto

Waqar Points 1651

L'erreur : "fatal : unable to create thread : Resource temporarily unavailable" suggère fortement que vous êtes à court de mémoire sur le serveur, ce qui peut arriver si vous avez un référentiel avec beaucoup de gros fichiers, ce qui peut faire que le re-packing prenne beaucoup de mémoire, ou une mémoire virtuelle limitée - soit en général, soit juste pour ce compte en raison du paramètre ulimit.

Quoi qu'il en soit, voici les commandes que vous pouvez exécuter pour limiter la quantité de mémoire que git peut prendre en vous connectant au système distant (en tant qu'utilisateur sous lequel git fonctionne) et en tapant ces commandes :

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

J'espère que ça va marcher.

60voto

Dans l'hébergement mutualisé, nous avons des ressources limitées en matière de processeur, principalement un seul processeur, donc le multi-threading ne fonctionne pas très bien. Cette erreur est due à la limitation des ressources du processeur.

Ce seul paramètre git est suffisant pour résoudre ce problème.

git config --global pack.threads "1"

Cela limite git à ne créer qu'un seul fil.

2 votes

Vous êtes un héros, vous avez sauvé ma nuit. Merci !

0 votes

Merci, ça a marché pour moi. Mais pouvez-vous expliquer pourquoi cela fonctionne ?

8voto

Nguyen Kien Points 136

Je suis également tombé sur cette erreur. Pour faire plus simple, cette erreur se produit parce que vous voulez copier un fichier de 100mb dans un hdd avec un espace libre de 50mb (ou moins). Pour résoudre ce problème, connectez-vous en SSH au serveur et exécutez les commandes suivantes :

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

2 votes

Il devrait être pack.packSizeLimit no pack.SizeLimit .

0 votes

En essayant ces retours xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

0 votes

Si vous rencontrez ce problème, veuillez consulter cet article : stackoverflow.com/questions/52522565/ - Problème résolu

4voto

VonC Points 414372

" unable to create thread: Resource temporarily unavailable "signifie un problème avec le serveur distant (par exemple, plus de mémoire disponible).

En ce qui concerne le delta, vous disposez des éléments suivants config à mettre au point :

pack.deltaCacheSize

La mémoire maximale en octets utilisée pour mettre en cache les deltas dans git-pack-objects(1) avant de les écrire dans un paquet.
Ce cache est utilisé pour accélérer la phase d'écriture des objets en évitant de recalculer le résultat final du delta une fois que la meilleure correspondance pour tous les objets est trouvée.
Le reconditionnement de grands dépôts sur des machines qui sont à court de mémoire pourrait être sérieusement affecté par cela, en particulier si ce cache pousse le système vers le swapping.
Une valeur de 0 signifie qu'il n'y a pas de limite.
La plus petite taille de 1 octet peut être utilisée pour désactiver virtuellement ce cache. La valeur par défaut est de 256 MiB.

pack.deltaCacheLimit

La taille maximale d'un delta, qui est mis en cache dans git-pack-objects(1).
Ce cache est utilisé pour accélérer la phase d'écriture des objets en évitant de recalculer le résultat final du delta une fois que la meilleure correspondance pour tous les objets est trouvée. La valeur par défaut est de 1000.

La question du SO " Le tirage de Git échoue avec une erreur d'en-tête de mauvais paquet " renvoie à d'autres pack -configurations liées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X