J'ai eu des cas d'échecs de Jenkins et rien que le redéploiement de Jenkins (Jenkins est une application Web dans Tomcat) m'a aidé. Même les nouveaux travaux ont échoué avec des erreurs d’espace PermGen, mais tous les paramètres étaient corrects (tous ces paramètres -XX:PermSize
partout où c’est possible). Le fait est qu'après le redéploiement tout a fonctionné comme un charme. Mais c'est une solution dure. Je voulais savoir s'il y avait des options pour restaurer l'état de Jenkins. Merci d'avance.
Mise à jour : D'accord, pour ceux qui pourraient être confrontés à quelque chose comme ça, voici ce que j'ai découvert. Ceux qui ont écrit qu'il était préférable de déployer Jenkins en tant que module Tomcat n'ont probablement pas rencontré de problèmes de déploiement de projet (avec le plugin Jenkins Deploy ou avec un Tomcat-maven-plugin
dans le pom.xml
de Maven). Je n'ai rencontré aucun des problèmes que j'ai décrits lors de l'installation de Jenkins séparément. Ouf!
Le paramètre qui compte vraiment pour les erreurs d’espace PermGen est (et ce doit être ceci exactement ):
-XX:MaxPermSize=512m
Un tiret, deux Big Xs, Big-M, Big-P, Big-S, pas d'espaces, taille en mégas/ minuscule m. Si vous le ratez, il sera ignoré. 99% de tous les correctifs PermGen que je vois qui "ne fonctionnent pas" sont dus au fait que quelqu'un n'a pas suivi les instructions à la lettre et a utilisé un Big-M pour les mégaoctets au lieu d'un petit-m, ou pour mettre deux tirets devant au lieu d'un Exemple.
En outre, 512 Mo n'est qu'un point de départ ... ajustez-le à votre système.
Une fois, j’ai rencontré des erreurs similaires: jenkins exécutait des builds maven, qui comprenaient l’exécution de tests surfire. J'ai découvert que la version de maven que j'utilisais (quelque chose de V2) ne transmettait pas mes options de mémoire JVM à la fourche du processus infaillible, et certains tests échouaient à cause de cela. MAVEN_OPTS, Java_OPTS, aucun ne fonctionnait.
J'ai fini par passer mes options de mémoire directement dans le fichier settings.xml, et les erreurs PermGen ont disparu.
Voici les options que j'ai utilisées (l'application était assez grosse):
-Xms512m -Xmx1024m -XX: PermSize = 512m -XX: MaxPermSize = 1024m
Suggestion complètement non testée, mais cette réponse suggère d'utiliser -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
lors du démarrage de Tomcat (bien que ce soit pour un problème dans un contexte complètement différent). Cette réponse , cependant, suggère que CMSPermGenSweepingEnabled
n'est pas nécessaire sur Java 6 et que -XX:+UseConcMarkSweepGC
doit être utilisé pour que CMSClassUnloadingEnabled
soit efficace.
Au minimum, -XX:+CMSClassUnloadingEnabled
peut faire l'affaire en supposant que le problème sous-jacent est dû au fait que des classes sont inutilement maintenues dans l'espace PermGen de votre instance Tomcat.
peut-être que cette question peut vous aider:
Comment donner à Jenkins plus d'espace disque lorsqu'il démarre en tant que service sous Windows?
Il y a de très bonnes réponses ici.
J'ai trouvé que l'ajout de JRE
à Java 8
m'a aidé. Par défaut, Jenkins utilise JRE
dans le dossier d’accueil, appelé par la tâche jenkins.xml
.
J'ai résolu l'erreur PermGen
sous Linux en ajoutant à jenkins.conf
:
wrapper.Java.additional.4=-XX:PermSize=1024M