Ошибка Jenkins Maven Build 137

У меня есть проект Maven, который строит 6 отдельных проектов Maven в Дженкинсе. Проблема, с которой я сталкиваюсь, заключается в том, что за время сборки проекта с кодом ошибки 137:

ОШИБКА: Maven JVM неожиданно завершилась с кодом выхода 137

Проект может быть успешно построен с использованием тех же целей Maven в консоли, но в Jenkins это не удается. Путем перезапуска Дженкинса проблема может быть решена.

У меня есть список статических массивов. Эти списки используются для некоторых тестовых случаев. Может ли это быть утечкой памяти?

Ответ 1

Я столкнулся с тем же поведением на нашем сервере сборки. Ошибка IMHO не связана с настройками памяти maven (т.е. MAVEN_OPTS), а скорее с памятью самой базовой (Linux) машины (на которой работает Jenkins).

Проблема (отклоненная) Дженкинса https://jenkins-ci.org/issue/12035 дает более подробную информацию по этому вопросу:

Для справки код состояния 137 (128 + 9) обычно означает (может различаться между вкусами unix). Чтобы процесс был прерван получением сигнала. В этом случае сигнал 9, который является SIGKILL и неблокируемым, убивает.

Если это так, то основной машине/ОС требуется больше виртуальной памяти. Это может быть добавлено путем добавления физической памяти или места подкачки по мере необходимости.

Вы должны попытаться увеличить виртуальную память вашей машины.

Заметка:
Это также объясняет, почему перезапуск Jenkins (временно) устраняет проблему.

Ответ 2

Я считаю, что вы должны увеличить значения параметров памяти - в MAVEN_OPTS на машине Jenkins, например

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

Ответ 3

При запуске Maven через Jenkins я получил эту ошибку:

ERROR: Maven JVM terminated unexpectedly with exit code 137

Я случайно помещаю "и" в параметр MAVEN_OPTS:

-Xmx1024m and -Xms1024m

Затем я получил эту ошибку:

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

После удаления "и" я повторно запустил Дженкинса и получил эту ошибку:

java.lang.OutOfMemoryError: Java heap space

Наконец, я увеличил память с помощью Global MAVEN_OPTS:

-Xmx4096m -Xms4096m

Это поставило проблему. Таким образом, это, по-видимому, связано с памятью. Однако это может быть проблема с машиной/виртуальной машиной (как указано выше @boskoop) или проблема с контейнером (если JVM запускается через Jenkins/Docker/etc).

Ответ 4

Процесс был убит Linux OOM Killer, потому что у вас мало ресурсов на машине.

Дайте машине больше памяти и/или замените или уменьшите объем памяти вашего процесса, на который напрямую влияет jvm default Xmx, который, скорее всего, далек от того, что действительно нужно jvm.

Дайте ему дополнительные параметры командной строки java

-Xmx256m -XX:MaxPermSize=512m

или настроить системную переменную

MAVEN_OPTS=-Xmx256m -XX:MaxPermSize=512m

MaxPermSize не используют java 8+

Ответ 5

Я столкнулся с тем же кодом ошибки. Этот код ошибки действительно кажется связанным с ограничениями ресурсов JVM в среде Jenkins. Я бы предложил повторно запустить сборку во второй раз после возникновения ошибки, чтобы увидеть, можете ли вы получить дополнительный/другой вывод, хотя это, безусловно, будет зависеть от того, какая часть сборки вызвала проблемы с ресурсами (по моей причине это была загрузка 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