Jenkins-build wirft ein " out of memory Fehler
Wir haben die Jenkins läuft auf einer ec2-Instanz. Wenn dabei eine zu bauen, sehen wir den folgenden Fehler:
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.
Ich recherchierte zu diesem Thema und versuchte, durch verschiedene Einstellungen wie z.B. die Erhöhung der heap-Speicher, ram und PermGenSize. Hier meine aktuellen memory-Einstellung auf Jenkins:
-Xms256m -Xmx2048m -XX:MaxPermSize=512m
Gibt es andere Dinge, die mir fehlt, was ein OOM?
- Ich vermute, dass die Jenkins-Speicher ist nicht das Thema hier, aber die gradle-Prozess (die laufen auf seiner eigenen jvm). Versuchen Sie die Erhöhung Gradle Gedächtnis (GRADLE_OPTS=-Xmx512m....) und testen Sie erneut.
- Ich habe die GRADLE_OPTS von-Xmx2048m und ich habe immer noch out of memory Probleme.
- Ich bin nicht allzu vertraut mit gradle... vielleicht ist es Gabeln eine neue jvm, was den Absturz... Auch - hast du genug Arbeitsspeicher frei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich verkauft-das gleiche problem. (Ich habe ec2, t2.micro, Ubuntu 14, Jenkins, Tomcat, Maven).
Standardmäßig nicht swap-space.
Um dies zu bestätigen:
Fügen Sie einfach einige. Versuchen Sie es mit 1 GB für beginnen.
Nochmals prüfen:
Für mehr details schauen Sie hier
Dies ist nicht ein Speicher-Problem auf JVM-Ebene, sondern auf OS-Ebene. Die JVM versucht zu reservieren, 224MB, aber diese Menge an Speicher ist nicht verfügbar auf OS-Ebene. Dies geschieht, wenn die -Xmx Einstellungen der JVM sind größer als die Menge des freien Speichers in einem system. Überprüfen Sie die Menge des freien Speichers in der OS, und entweder begrenzen Sie die Erinnerung an Ihre aktuelle JVM, so dass sich innerhalb der freie Speicher, oder versuchen, um Speicher freizugeben (durch die Begrenzung des Arbeitsspeichers anderer Prozesse verwenden) oder versuchen, aus einer EC2-Instanz mit mehr Speicher.