2015-06-25 7 views
12

Mamy Jenkinsa działającego na instancji EC2. Podczas kompilacji, widzimy następujący błąd:Konstrukcja Jenkinsa wyrzucająca błąd braku pamięci

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. 

badałem na ten temat i próbowałem różnych ustawień, takich jak zwiększenie sterty pamięci, pamięci RAM i PermGenSize. Oto moje bieżące ustawienie pamięci na Jenkins:

-Xms256m -Xmx2048m -XX:MaxPermSize=512m 

Czy są inne rzeczy, których mi brakuje, to powoduje OOM?

+0

Podejrzewam, że pamięć Jenkins nie jest problemem tutaj, ale proces Gradle (który jest prowadzony na własnej JVM) . Spróbuj zwiększyć pamięć Gradle'a (GRADLE_OPTS = -Xmx512m ....) i przetestuj ponownie. –

+0

Mam GRADLE_OPTS ustawiony na -Xmx2048m i nadal mam problemy z pamięcią. – Satya

+0

Nie jestem zbyt zaznajomiony z gradle ... może to widzi nowy jvm, który się zawiesza ... Również - czy masz wystarczająco dużo pamięci systemowej? –

Odpowiedz

5

To nie jest problem z pamięcią na poziomie JVM, ale na poziomie systemu operacyjnego. JVM próbuje przydzielić 224 MB, ale ta ilość pamięci nie jest dostępna na poziomie systemu operacyjnego. Dzieje się tak, gdy ustawienia -Xmx JVM są większe niż ilość wolnej pamięci w systemie. Sprawdź ilość wolnej pamięci w systemie operacyjnym i albo ogranicz pamięć obecnej maszyny JVM tak, aby mieściła się w wolnej pamięci, albo spróbuj zwolnić pamięć (ograniczając ilość pamięci używaną przez inne procesy) lub wypróbuj instancję EC2 z większą ilością pamięci.

6

Sprzedałem ten sam problem. (Mam ec2, t2.micro, Ubuntu 14, Jenkins, Tomcat, Maven). Domyślnie nie ma miejsca wymiany. Aby uzyskać potwierdzenie:

free -m 

Po prostu dodaj. Spróbuj z 1 GB na początek.

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

Sprawdź ponownie:

free -m 

Aby uzyskać więcej informacji wyglądać here

+0

Pracował jak urok! – CandleCoder