Проблемы с памятью кучи при запуске скрипта Android Gradle в Jenkins на сервере hosteurope

Для проекта Android, использующего систему сборки gradle, я хочу запустить тесты и сборку в jenkins на виртуальном сервере, предоставленном hosteurope.

Система использует

  • Debian Wheezy (7.5)
  • OpenJDK-7 (7u55-2.4.7-1~deb7u1)
  • Jenkins (1.564) в качестве отдельного сервера.

Для запуска задания jenkins я установил

  • Плагин Gradle (1.23)
  • Плагин эмулятора Android (2.11.1)

Для самого процесса сборки используются Android Build Tools (19.1).

Сборка завершается сбоем каждый раз во время выполнения задачи preDexDebug со следующим сообщением об ошибке:

:app:preDexDebugError: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/var/lib/jenkins/tools/android-sdk/build-tools/19.1.0/dx --dex --output    /var/lib/jenkins/workspace/test_project/app/build/pre-dexed/debug/ormlite-core-4.48-bdb20e19ede8fedfab10bb99de3affa6b8ed6e4d.jar /var/lib/jenkins/.gradle/caches/modules-2/files-2.1/com.j256.ormlite/ormlite-core/4.48/e579bd2905d0399af5029aaaf9817d5fa0ca88a5/ormlite-core-4.48.jar
  Error Code:
    1
  Output:
    Error: Could not create the Java Virtual Machine.
    Error: A fatal exception has occurred. Program will exit.

При использовании ключа "--debug" в качестве причины сбоя представляется нехватка памяти в куче.

К сожалению, установка параметра JAVA_ARGS в /etc/default/jenkins или DEFAULT_JVM_OPTS в сценарии gradlew на «-Xms128m -Xmx512» не решает проблему. Единственное рабочее решение, которое я нашел, это использование _JAVA_OPTIONS.

Поэтому я добавил _JAVA_OPTIONS в качестве переменной среды в конфигурации jenkins.

Перейдите в меню «Jenkins->Управление Jenkins->Настроить систему» ​​и установите флажок «Переменные среды» в разделе «Глобальные свойства». Затем нажмите кнопку «Добавить» и вставьте _JAVA_OPTIONS в текстовое поле с надписью «имя» и «-Xms64M -Xmx512M» в текстовое поле с надписью «значение».

Согласно немецкому разделу часто задаваемых вопросов на веб-сайте hosteurope (http://faq.hosteurope.de/index.php?cpid=13918) проблема вызвана неправильным расчетом доступной памяти на VPS hosteurope.


person oliver.welter    schedule 26.05.2014    source источник
comment
Я не уверен в том, что вы спрашиваете. Решила ли установка этих переменных среды проблему? Вы пытались открыть тикет с владельцем системы по этому поводу? Кстати, по моему опыту, -Xmx512 кажется немного низким для полной сборки и тестов Gradle (конечно, это зависит от вашего проекта). Вы пробовали с -Xmx2048 или что-то в этом роде?   -  person Jorge_B    schedule 26.05.2014
comment
Проблема решается с использованием значений, представленных в вопросе. Я безуспешно пробовал более высокие значения, такие как -Xmx2048 в сценарии gradlew. На данный момент проект очень маленький, но, вероятно, в будущем мне придется использовать более высокие значения в _JAVA_OPTIONS. Я хотел пометить вопрос как отвеченный или ответить на него сам, но из-за отсутствия очков репутации мне приходится ждать несколько часов, прежде чем я смогу это сделать. Поскольку мне потребовалось несколько часов, чтобы понять проблему, я хотел поделиться решением с другими, столкнувшимися с той же проблемой.   -  person oliver.welter    schedule 26.05.2014


Ответы (1)


Обходной путь для объясненной проблемы — использование _JAVA_OPTIONS в качестве переменной среды в jenkins, как это представлено в вопросе. Это повлияет на все процессы Java, запущенные jenkins, что может привести к другим проблемам. Надеемся, что следующее обновление Java или Hosteurope VPS полностью решит проблему.

person oliver.welter    schedule 27.05.2014