Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > Übersicht tags
agorum core läuft in einer Java Virtual Machine (JVM). Reicht der Arbeitsspeicher nicht aus, der dieser JVM zugewiesen ist, wird das System langsam oder reagiert zeitweise gar nicht. Diese Dokumentation beschreibt, wie Sie einen Speichermangel erkennen und den Speicher der JVM passend einstellen.
Die JVM verwaltet ihren Speicher innerhalb des Maximums, das der Parameter Xmx festlegt. Objekte, die nicht mehr benötigt werden, gibt der Garbage Collector frei. Er arbeitet im Hintergrund, ohne den Betrieb anzuhalten. Deshalb steigt der freie Speicher immer wieder sprunghaft an und sinkt danach wieder.
Benötigt ein Prozess kurzfristig viel Speicher, etwa beim Extrahieren eines großen Dokuments, und ist nicht genug frei, muss der Garbage Collector gründlich aufräumen. Gelingt das nicht im Hintergrund, hält die JVM vollständig an, bis der Speicher freigegeben ist. Dieser Vorgang heißt Full GC (auch Stop the World). Solange er läuft, reagiert agorum core nicht. Reicht der freigegebene Speicher trotzdem nicht aus, bricht der Vorgang mit einem OutOfMemoryError ab.
Hinweis: Mehr Arbeitsspeicher für die virtuelle Maschine oder den Server erhöht den Speicher der JVM nicht automatisch. Die JVM verwendet nur so viel Speicher, wie mit dem Parameter Xmx festgelegt ist. Passen Sie deshalb auch die Einstellungen der JVM an, siehe RAM nachträglich anpassen (JDK).
Hinweis: JVM Free Memory zeigt den Speicher, der zum Zeitpunkt der Messung frei ist. Das ist nicht der Speicher, der nach einer vollständigen Garbage Collection frei wäre. Ein einzelner niedriger Wert ist deshalb noch kein Zeichen für einen Speichermangel. Aussagekräftig ist der Verlauf über einen längeren Zeitraum.
| Verlauf der Kurve | Bedeutung |
|---|---|
| Die Kurve pendelt deutlich auf und ab. | Der Garbage Collector gibt regelmäßig Speicher frei. Der Speicher reicht aus. |
| Die Kurve sinkt über längere Zeit ab und pendelt danach nur noch zwischen niedrigen Werten nahe der Untergrenze, etwa um 100 MB. | Der Garbage Collector findet kaum noch freien Speicher. Der JVM ist zu wenig Speicher zugewiesen. |
Genauer als die Kurve im agorum core support tool ist der Garbage-Collection-Log (GC-Log) der JVM. Er zeigt, wann ein Full GC aufgetreten ist und wie lange er gedauert hat. Den GC-Log schalten Sie über Startoptionen der JVM ein, die Sie im Startskript von agorum core ergänzen.
Hinweis: agorum core verwendet Java 8. Die folgenden Optionen gelten für Java 8. Weitere Optionen, etwa zum Rotieren der Log-Dateien, finden Sie in der Java-Dokumentation.
Installationspfad/agorum/agorumcore/scripts/roi_jboss Installationspfad\agorum\agorumcore\scripts\roi_jboss.bat JAVA_OPTS="${JAVA_OPTS} -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/agorum/agorumcore/jboss/server/default/log/gc_ac_$(date +"%Y%m%d_%H%M").log" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:Installationspfad\agorum\agorumcore\jboss\server\default\log\gc_ac.log Achtung: Verlust des GC-Logs unter Windows durch einen Neustart. Der Dateiname ist fest, deshalb überschreibt die JVM die Datei bei jedem Start. Sichern Sie die Datei vor einem Neustart, wenn Sie sie noch auswerten wollen.
Hinweis: Der GC-Log wächst mit der Laufzeit. Entfernen Sie alte Log-Dateien, die Sie nicht mehr benötigen, oder schalten Sie den GC-Log nach der Analyse wieder ab, indem Sie die Zeile aus dem Startskript entfernen.
Wie ein GC-Log ausgewertet wird, zeigt auch die Dokumentation Solr konfigurieren am Beispiel von Solr.
Achtung: Beeinträchtigung des Servers durch zu viel Speicher für die JVM. Das Betriebssystem benötigt selbst Arbeitsspeicher, etwa als Dateicache. Weisen Sie der JVM deshalb nicht den gesamten freien Arbeitsspeicher des Servers zu, sondern nur so viel, wie die Messung ergibt.
Ein passend eingestellter Speicher bleibt gültig, solange sich die Nutzung nicht wesentlich ändert. Prüfen Sie die Einstellung erneut, wenn deutlich mehr Benutzer mit agorum core arbeiten oder neue Hintergrundprozesse hinzukommen, etwa Automatisierungen oder KI-Verarbeitung.