Назад | Перейти на главную страницу

Ошибка сборки Jenkins с OOM: невозможно создать новый собственный поток

Я настраиваю экземпляр jenkins на VServer с 2 ГБ ОЗУ, и больше ничего не работает (использование <200 МБ) под управлением CentOS 6.7.

При запуске сборки jenkins на указанном экземпляре я всегда получаю эту ошибку при запуске jenkins gradle --debug --stacktrace test:

19: 26: 50.727 [ERROR] [org.gradle.BuildExceptionReporter] Причина: java.lang.OutOfMemoryError: невозможно создать новый собственный поток

Поскольку это похоже на то, что многие потоки не разрешены, я увеличил ulimit до:

[корень @ xxx] # runuser -s / bin / bash jenkins -c 'ulimit -u'

16384

Я также пробовал разные флаги выделения памяти JVM jenkins, давая экземпляру 200 МБ или 1 ГБ ничего не изменилось, уменьшение размера стека, чтобы освободить место для собственных потоков, тоже не помогло.

Когда я запускаю ту же команду gradle, что и root, gradle зависает с аналогичной ошибкой:

19:29:14.939 [QUIET] [system.out] Error occurred during initialization of VM
19:29:14.940 [QUIET] [system.out] java.lang.OutOfMemoryError: unable to create new native thread
19:29:14.941 [QUIET] [system.out]       at java.lang.Thread.start0(Native Method)
19:29:14.941 [QUIET] [system.out]       at java.lang.Thread.start(Thread.java:714)
19:29:14.942 [QUIET] [system.out]       at java.lang.ref.Reference.<clinit>(Reference.java:187)

Могу я еще что-нибудь исправить?

Вы захотите увеличить размер кучи, передаваемый самой Gradle JVM, это не наследуется от конфигурации Jenkins. Вы можете указать это с помощью GRADLE_OPTS переменная среды, либо глобально в Jenkins через «Управление Jenkins> Настроить систему> Глобальные свойства> Переменные среды». Вы должны добавить GRADLE_OPTS переменная с соответствующими настройками. Вы также можете сделать это при вызове Gradle, добавив к команде префикс переменной среды, например:

GRADLE_OPTS="-Xmx256m" ./gradlew build