Comment réparer les Jenkins OutofMemoryError

Comment réparer les Jenkins OutofMemoryError
L'une des erreurs les plus importantes lorsque vous travaillez avec Jenkins est l'erreur OutofMemory. Ce tutoriel explique pourquoi cette erreur peut apparaître dans vos Jenkins et comment le réparer.

Quelle est l'overofMemoryerror?

Un «outofMemoryError» dans Java est une erreur qui se produit lorsque la machine virtuelle Java (JVM) n'a pas assez de mémoire disponible pour exécuter une opération donnée avec succès.

Il peut être causé par diverses raisons telles que:

  1. Le JVM a été configuré avec une petite taille maximale. Par conséquent, lorsqu'une application qui s'exécute sur le JVM a besoin de plus de taille de tas que la taille maximale de set, elle échoue, conduisant à l'OutofMemoryError.
  2. L'application a une fuite de mémoire potentielle, ce qui le fait conserver de plus en plus de mémoire au fil du temps.

Afin de résoudre une oreilleurror inauguration, nous devons identifier la cause de l'erreur et prendre une mesure appropriée.

Cependant, cela est trop large et peut s'appliquer à toute application qui s'exécute sur le JVM. Laissez-nous restreindre ce qui peut provoquer une oreilleurror sur Jenkins.

Causes d'OutofMemoryerror à Jenkins

Dans le contexte du cluster Jenkins, il y a quatre causes principales de cette erreur. Ils incluent les éléments suivants:

  1. Augmenter la taille des données de Jenkins. À mesure que la taille de vos données dans votre instance Jenkins augmente, l'application nécessite également une taille de tas plus grande.
  2. Jenkins pourrait traiter temporairement une grande quantité de données.
  3. Fuite de mémoire potentielle dans Jenkins.
  4. Le noyau du système hôte est à court de mémoire virtuelle.

Diagnostic de la principale cause de l'OutofMemoryerror à Jenkins

Nous avons établi quatre causes potentielles de ce type d'erreur dans Jenkins. Comment pouvons-nous réduire la cause principale de cette erreur?

Dans un tel cas, nous pouvons utiliser un outil tel que VisualVM qui nous permet de visualiser l'utilisation de la mémoire du JVM sur notre système.

Cet outil peut identifier la principale cause de l'OutofMemoryError lorsque vous travaillez avec Jenkins.

Accédez au lien suivant et téléchargez la dernière version de votre machine de l'outil VisualVM.

https: // visualvm.github.io /

Une fois téléchargé, exécutez l'application et sélectionnez «local» pour afficher l'utilisation JVM sur votre machine locale.

Cela devrait vous montrer les détails de votre système, y compris la mémoire physique disponible, la mémoire d'échange et plus.

Pour déterminer la cause de cette erreur, arrêtez Jenkins et recommencez tout en surveillant l'utilisation de la mémoire JVM sur votre machine locale.

Si l'utilisation de la mémoire se maximum pendant le démarrage de Jenkins, la cause est une petite taille de tas.

Cependant, si l'utilisation de la mémoire augmente lentement, cela peut être une fuite de mémoire potentielle sur votre version Jenkins.

Si Jenkins utilise toute la mémoire virtuelle disponible, t le noyau hôte est à court de mémoire virtuelle. Vous pouvez résoudre ce problème en augmentant la mémoire virtuelle disponible ou en terminant les versions de Jenkins en cours d'exécution.

Comment configurer la taille du tas pour le JVM

Si vous êtes confronté à l'OutofMemoryError en raison d'une petite taille de tas, la solution est juste pour allouer une taille de tas plus grande.

Nous pouvons configurer la taille du tas initiale et maximale de JVM à l'aide des paramètres -xms et -xmx.

Remarque: il est recommandé de définir la même valeur pour les -xms et Xmx pour le JVM.

Bien que la taille suffisante du tas puisse varier en fonction des ressources système disponibles et de la charge de travail Jenkins, il est recommandé de régler la taille du tas sur 2 Go (minimum) et 16 Go (maximum).

Vous pouvez augmenter la taille du tas pour Jenkins sur Linux. Vous pouvez modifier le service de démarrage Jenkins avec la commande suivante:

$ sudo systemctl edit jenkins

Vous pouvez également modifier le fichier de service manuellement, comme indiqué dans ce qui suit:

sudo vim / usr / lib / systemd / système / jenkins.service

Localisez l'option java_opts et ajoutez les options -xms et -xmx comme indiqué dans les éléments suivants:

Environnement = "java_opts = -djava.awt.headless = true -xms1g -xmx1g "

L'ajout des options précédentes augmente la taille de la mémoire du tas à 1 Go. Une fois terminé, vous pouvez redémarrer le service Jenkins comme suit:

$ sudo systemctl redémarrer jenkins

Vous pouvez augmenter les valeurs -XMS et XMX pour Jenkins sous Windows en modifiant le fichier de configuration.

Par défaut, le fichier de configuration est situé dans C: \ Program Files \ Jenkins \ Jenkins.xml.

Modifiez le bloc d'arguments du fichier XML comme indiqué dans les éléments suivants:

Une fois édité, enregistrez le fichier et redémarrez le service Jenkins.

Conclusion

Vous avez découvert la cause de l'OutofMemoryError lorsque vous travaillez avec Jenkins. Vous avez également appris à dépanner les différentes causes de cette erreur. Enfin, vous avez maintenant appris les multiples méthodes pour la réparer.