Дженкинс строит выброс ошибки из памяти
У нас есть 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
Подробнее см. здесь