Моим заданиям Jenkins не хватает памяти, что приводит к сообщениям java.lang.OutOfMemoryError в журнале сборки. Но я использовал диспетчер пакетов Ubuntu, aptitude или apt-get для установки Jenkins, и я не знаю, где искать, чтобы изменить объем кучи, выделенный для Jenkins.
Вопрос
Как предоставить Jenkins больше места в куче, когда он работает как демон в Ubuntu?
Ответы
Ответ 1 · рейтинг 76 · Steve HHH
Существует два типа сообщений OutOfMemoryError, с которыми вы можете столкнуться во время выполнения задания Jenkins:
java.lang.OutOfMemoryError: Heap space- это означает, что вам нужно увеличить количество места в куче, выделяемое Jenkins при запуске демона.java.lang.OutOfMemoryError: PermGen space- это означает, что вам необходимо увеличить объем пространства генерации, выделенного для хранения метаданных объекта Java. Увеличение значения параметра-Xmxне повлияет на эту ошибку.
В Ubuntu 12.04 LTS раскомментируйте настройку JAVA_ARGS в десятой строке /etc/default/jenkins:
- Чтобы увеличить объем кучи Java, увеличьте значение параметра
-XmxJava. Это устанавливает максимальный размер пула выделения памяти (куча для сбора мусора). - Чтобы добавить больше пространства PermGen, добавьте параметр
XX:MaxPermSize=512m(замените512чем-то другим, если хотите больше. Куча постоянного поколения содержит метаинформацию о пользовательских классах.
Например, этот отрывок из /etc/default/jenkins по умолчанию после новой установки Jenkins:
# arguments to pass to java
#JAVA_ARGS="-Xmx256m"
Вот как это будет выглядеть, если вы установите размер кучи равным 1 ГБ:
# arguments to pass to java
JAVA_ARGS="-Xmx1048m"
Будьте осторожны и не устанавливайте слишком большой размер кучи, так как все, что вы выделяете, уменьшает объем памяти, доступной для операционной системы и других программ, что может привести к чрезмерному подкачке (память перемещается туда и обратно между ОЗУ и диском подкачки, что замедляет работу). ваша система не работает).
Если вы также задали MaxPermSpace, вам нужно добавить пробел между параметрами):
# arguments to pass to java
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"
После внесения изменений аккуратно перезапустите Jenkins из веб-интерфейса Jenkins или принудительно перезапустите из командной строки с помощью sudo /etc/init.d/jenkins restart.
Я нашел следующий сайт полезным для понимания максимальных и постоянных размеров кучи Java: .html" rel="noreferrer">http://www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-permgen-space.html.
Ответ 2 · рейтинг 32 · AvianFLU
Для CentOS каталог Jenkins.xml по умолчанию находится в /etc/sysconfig/ для jenkins-1.579-1.1.
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
Ответ 3 · рейтинг 20 · Juampy NR
Если вы используете Ubuntu Server, сначала установите плагин Monitoring, чтобы увидеть, сколько памяти использует Jenkins. . Например, вот что я увидел после установки:
Затем с помощью команды free -m я вычислил размер памяти сервера. В моем случае 16Gb. С этой информацией я открыл /etc/default/jenkins и изменил:
JAVA_ARGS="-Djava.awt.headless=true"
to
JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"
Где 8384 это 8Gb. Затем я перезапустил Jenkins с помощью команды sudo service jenkins restart, а затем, после запуска задания, у которого возникали проблемы с памятью, все выглядело намного лучше, и задание могло завершиться в этом и последующих запусках:
Ответ 4 · рейтинг 2 · Sandy
Другой способ задать размер кучи для конкретных заданий - использовать переменные среды для каждого задания. Это гарантирует доступность памяти, когда задание, требующее большего объема памяти, не используется.
GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xms1024M -Xmx8192M -XX:PermSize=512M -XX:MaxPermSize=2048 -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8"
JAVA_OPTS="-XX:MaxPermSize=2048M"
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Fread не читает весь файл
- Не могу опубликовать поток на движке Wowza Streaming. Сервер создает и тут же уничтожает поток
- Как скомпилировать конфигурацию выпуска для консольного приложения Ubuntu .NET Core RC2
- Как восстановить файлы с удаленных экземпляров odoo
- Как я могу сообщить о результатах тестирования TestNG / Maven / Jenkins по электронной почте и прикрепить
- Работа Jenkins/Maven - дважды запускать набор тестов?