2015-06-25 8 views
12

Abbiamo Jenkins in esecuzione su un'istanza di ec2. Quando si esegue una build, si vede il seguente errore:Jenkins crea un errore di memoria di lancio

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. 

ho ricercato su questo argomento e ha cercato varie impostazioni come l'aumento della heap di memoria, ram e PermGenSize. Ecco la mia attuale impostazione di memoria su Jenkins:

-Xms256m -Xmx2048m -XX:MaxPermSize=512m 

Ci sono altre cose che mi mancano che causano un OOM?

+0

ho il sospetto che la memoria Jenkins non è il problema qui, ma il processo Gradle (che viene eseguito sulla propria JVM) . Prova ad aumentare la memoria di Gradle (GRADLE_OPTS = -Xmx512m ....) e prova di nuovo. –

+0

Ho impostato GRADLE_OPTS su -Xmx2048m e ho ancora problemi di memoria insufficiente. – Satya

+0

Non ho molta familiarità con gradle ... forse forge una nuova jvm, che è ciò che si blocca ... Inoltre, hai abbastanza memoria di sistema libera? –

risposta

5

Questo non è un problema di memoria a livello di JVM, ma a livello di SO. La JVM tenta di allocare 224 MB, ma questa quantità di memoria non è disponibile a livello di sistema operativo. Ciò accade quando le impostazioni -Xmx di una JVM sono maggiori della quantità di memoria disponibile in un sistema. Controllare la quantità di memoria disponibile nel sistema operativo e limitare la memoria della JVM corrente in modo che si adatti alla memoria libera oppure provare a liberare memoria (limitando la quantità di memoria utilizzata da altri processi) o provare un'istanza EC2 con più memoria.

6

Ho venduto lo stesso problema. (Ho ec2, t2.micro, Ubuntu 14, Jenkins, Tomcat, Maven). Per impostazione predefinita, lo non dispone dello spazio di scambio. A conferma di ciò:

free -m 

Basta aggiungere un po '. Prova con 1 GB per iniziare.

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

controllare ancora:

free -m 

Per maggiori dettagli guardare here

+0

Ha funzionato come un fascino !! – CandleCoder