web-dev-qa-db-fra.com

Erreur Jenkins Maven Build 137

J'ai un projet Maven, qui construit 6 projets Maven distincts à Jenkins. Le problème auquel je suis confronté est qu'au fil du temps, la construction du projet échoue en donnant le code d'erreur 137:

ERREUR: Maven JVM s'est terminée de manière inattendue avec le code de sortie 137

Le projet a pu être construit avec succès en utilisant les mêmes objectifs Maven dans la console, mais à Jenkins, il échoue. En redémarrant Jenkins, le problème peut être résolu.

J'ai des listes de tableaux statiques. Ces listes sont utilisées pour certains cas de test. Serait-ce une fuite de mémoire?

35
user2822319

J'exécutais le même comportement sur notre serveur de build. L'erreur est IMHO non associée aux paramètres de mémoire maven (c'est-à-dire MAVEN_OPTS) mais plutôt avec la mémoire de la machine sous-jacente (Linux) elle-même (sur laquelle Jenkins s'exécute).

Le problème (rejeté) de Jenkins https://jenkins-ci.org/issue/12035 donne plus de détails à ce sujet:

Pour référence, le code d'état 137 (128 + 9) signifie généralement (peut différer entre les saveurs d'Unix). Que le processus s'est terminé par la réception d'un signal. Dans ce cas, le signal 9 est SIGKILL et kill imblocable.

Si tel est le cas , la machine/le système d'exploitation sous-jacent a besoin de plus de mémoire virtuelle . Cela peut être ajouté en ajoutant de la mémoire physique ou en échangeant de l'espace selon le cas.

Vous devriez essayer d'augmenter la mémoire virtuelle de votre machine.

Remarque:
Cela explique également pourquoi un redémarrage de Jenkins résout (temporairement) le problème.

34
boskoop

Je pense que vous devriez augmenter les valeurs des paramètres de mémoire - dans MAVEN_OPTS sur la machine Jenkins, par exemple.

MAVEN_OPTS=-Xmx1.5G -XX:MaxPermSize=0.7G 
7
Mateva

Lors de l'exécution de Maven via Jenkins, j'ai eu cette erreur:

ERROR: Maven JVM terminated unexpectedly with exit code 137

J'ai accidentellement mis un "et" dans le paramètre MAVEN_OPTS:

-Xmx1024m and -Xms1024m

Ensuite, j'ai eu cette erreur:

Error: Could not find or load main class and
ERROR: Failed to launch Maven. Exit code - 1

Après avoir supprimé le "et", j'ai relancé Jenkins et reçu cette erreur:

Java.lang.OutOfMemoryError: Java heap space

Enfin, j'ai augmenté la mémoire en utilisant Global MAVEN_OPTS:

-Xmx4096m -Xms4096m

Cela a résolu le problème. Donc, cela semble être lié à la mémoire. Cependant, il peut s'agir d'un problème lié à la machine/machine virtuelle (comme indiqué ci-dessus @boskoop) ou un problème de conteneur (si la JVM est exécutée via Jenkins/Docker/etc).

1
Scott Izu

Le processus a été tué par Linux OOM Killer car vous manquez de ressources sur la machine.

Donnez à la machine plus de mémoire et/ou permutez ou réduisez l'empreinte mémoire de votre processus qui est directement impacté par jvm par défaut Xmx, ce qui est très probablement loin de ce dont jvm a réellement besoin.

Donnez-lui des options de ligne de commande supplémentaires Java

-Xmx256m -XX:MaxPermSize=512m

ou configurer la variable système

MAVEN_OPTS=-Xmx256m -XX:MaxPermSize=512m

MaxPermSize n'a aucune utilité pour Java 8+

1

J'ai rencontré le même code d'erreur. Ce code d'erreur semble en effet lié aux contraintes de ressources JVM dans l'environnement Jenkins. Je suggérerais de relancer la génération une deuxième fois après que l'erreur se soit produite pour voir si vous pouvez obtenir une sortie supplémentaire/différente, bien que cela dépendra certainement de la partie de la génération qui a causé les problèmes de ressources (dans ma cause, c'était un téléchargement Maven ).

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fb7cb000, 7331840, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 7331840 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /vagrant/args4Java/hs_err_pid10470.log
ERROR: Maven JVM terminated unexpectedly with exit code 1
Finished: FAILURE
0
DTS