Дженкинс строит выброс ошибки из памяти

У нас есть Jenkins, работающий на экземпляре ec2. При выполнении сборки мы видим следующую ошибку:

17:29:39.149 [INFO] [org.gradle.api.Project] OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000007ac000000, 234881024, 0) failed; error='Cannot allocate memory' (errno=12)
17:29:39.150 [INFO] [org.gradle.api.Project] #

17:29:39.150 [INFO] [org.gradle.api.Project] # There is insufficient memory for the Java Runtime Environment to continue.

17:29:39.150 [INFO] [org.gradle.api.Project] # Native memory allocation (malloc) failed to allocate 234881024 bytes for committing reserved memory.

Я исследовал эту тему и пробовал различные настройки, такие как увеличение памяти кучи, ram и PermGenSize. Вот моя текущая настройка памяти на Jenkins:

-Xms256m -Xmx2048m -XX:MaxPermSize=512m

Есть ли другие вещи, которые мне не хватает, что вызывает OOM?

Ответ 1

Это не проблема памяти на уровне JVM, а на уровне ОС. JVM пытается выделить 224 МБ, но этот объем памяти недоступен на уровне ОС. Это происходит, когда параметры -Xmx JVM больше, чем количество свободной памяти в системе. Проверьте объем свободной памяти в ОС и либо ограничьте память вашей текущей JVM, чтобы она находилась в свободной памяти, либо попыталась освободить память (ограничив объем памяти другими процессами) или попробуйте экземпляр EC2 с большей памятью.

Ответ 2

Я продал ту же проблему. (У меня есть ec2, t2.micro, Ubuntu 14, Jenkins, Tomcat, Maven). По умолчанию у вас нет пространства подкачки. Чтобы подтвердить это:

free -m

Просто добавьте. Попробуйте начать с 1 ГБ.

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Еще раз проверьте:

free -m

Подробнее см. здесь