git push fatal: impossible de créer du thread: ressource temporairement indisponible

je suis nouveau à git. Je veux pousser un grand commit vers un serveur distant mais le problème est quand 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

il est donc là de toute façon je peux définir l'utilisation de fil max pour la Compression Delta.

Merci pour l'aide,

Yuan Chen

30
demandé sur Yuan Chen 2012-03-28 14:05:26

3 réponses

l'erreur: "fatal: unable to create thread: Resource temporarily unavailable" suggère fortement que vous avez épuisé la mémoire sur le serveur, ce qui peut arriver si vous avez un dépôt avec beaucoup de gros fichiers, ce qui peut causer le re-packing pour prendre beaucoup de mémoire, ou la mémoire virtuelle limitée - soit en général, ou juste pour ce compte en raison du paramètre ulimit.

de toute façon, voici les commandes que vous pouvez exécuter pour limiter la quantité de mémoire que l'emballage peut prendre par se connecter au système distant (en tant qu'utilisateur sous lequel git s'exécute) et taper ces commandes:

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

espérons que ça marche.

94
répondu Waqar 2017-05-18 15:34:48

j'ai aussi trébuché sur cette erreur. Pour simplifier, cette erreur se produit parce que vous voulez copier un fichier de 100 Mo dans un disque dur avec un espace libre de 50 Mo (ou moins). Pour corriger cela, SSH entre dans le serveur et exécute les commandes suivantes:

git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m"
3
répondu Nguyen Kien 2017-05-18 15:35:14

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

en ce qui concerne delta, vous avez le suivant config à tweak:

pack.deltaCacheSize

la mémoire maximale en octets utilisée pour la mise en cache des deltas dans git-pack-objects(1) avant de les écrire à un pack.

Ce cache est utilisé pour accélérer la phase d'écriture de l'objet en n'ayant pas à recalculer final delta résultat une fois le meilleur match de tous les objets est trouvé.

Le réemballage de grands dépôts sur des machines qui sont serrées avec la mémoire pourrait être gravement affecté par cela cependant, surtout si ce cache pousse le système à échanger.

Une valeur de 0 signifie aucune limite.

La plus petite taille de 1 octet peut être utilisée pour désactiver virtuellement ce cache. Par défaut à 256 MiB.

pack.deltaCacheLimit

La taille maximale d'un delta, qui est mis en cache dans git-pack-objets(1).

Ce cache est utilisé pour accélérer la phase d'écriture de l'objet en n'ayant pas à recalculer le résultat final delta une fois que la meilleure correspondance pour tous les objets est trouvée. Par défaut à 1 000.

DONC, la question " Git pull échoue avec un mauvais pack d'erreur d'en-tête " références autres pack configs.

2
répondu VonC 2017-05-23 10:31:31