Wildfly


#1

Hallo zusammen,

mein Wildfly frisst den gesamten verfügbaren RAM auf uns landet dann in Service Unavailable, der Prozess an sich läuft wohl noch, muss aber trotzdem neu starten.

Habe xmx auf 1024 es wird aber 4GB RAM gefressen.

Wie kann ich das Problem lösen? Wie finde ich Memoryleaks?


#2

Hab frueher VisualVM manchmal Eclipse MAT (memory analyzer tool) genutzt, um Heapdumps oder gar laufende Prozesse zu analysieren.


#3

Gibts da irgendwo ne Anleitung wie man was in den Tools sieht? Hab kein Nerv mich da so spontan einzuarbeiten. Man findet immer keine Info zu Bedienung solcher Tools


#4

Ist Casesensitive, nur für den Fall, dass da tatsächlich xmx steht. -Xmx
-XshowSettings gibt dann auch noch an was nun als heap verwendet wird und startet dann das Programm. Heap ist afair nicht alles, da kommt noch PermGen dazu.

Ansonsten gilt, werden aktuelle Versionen von Java und App-Server verwendet. Hilft es wenn die aktuellen Versionen verwendet werden? Oracle oder OpenJDK?

Es finden sich Anleitungen auch auf Youtube zu den genannten Tools um mal einen ersten Eindruck zu bekommen.


#5

Hi Danke. Ist Xmx also ok.

Versteh nicht wie das 6gb und mehr fressen will so groß sind nicht mal alle Dateien zusammen die es da liest.


#6

Wenn ich java -XShowSettings auf Konsole aufrufe, kommt
VM settings:
Max. Heap Size (Estimated): 29.97G
Using VM: Java HotSpot™ 64-Bit Server VM

Kann es sein, dass durch den folgenden Eintrag in der standalone.conf die Settings vom OS genommen werden und nicht die welche in der standalone konfiguriert sind??

if [ “x$JAVA_OPTS” = “x” ]; then
JAVA_OPTS="-Xms64m -Xmx2g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1g -Djava.net.preferIPv4Stack=true"
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
else
echo “JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS”
fi

edit:
Hab grad mal die Werte für die JVM gesetzt
export _JAVA_OPTIONS="-Xms512m -Xmx1024m"
aber nix da, frisst trotzdem alles was geht


#7

Rufst du nur das auf der Konsole auf? Normalerweise nutzt man das showSettings als zusätzlichen Parameter, wenn man ein Programm startet

java -XshowSettings -Xmx1G -Xms512M myApp.Main

Das -XshowSettings würde ich mal zu den JAVA_OPTS hinzufügen und dann schauen ob er beim Start die Settings ausgibt und wie diese gesetzt sind.

Der Underscore vor JAVA_OPTIONS sieht komisch aus.


#8

Hi,

wo muss ich das denn hinzufügen? hab es in die Standalone geschrieben aber in der server.log wird das nicht ausgegeben. Die Strtparameter geb ich doch in der standalone.con an oder?


#9

Also ich hätte es hier eingefügt.

JAVA_OPTS="-XshowSettings -Xms64m -Xmx2g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1g  -Djava.net.preferIPv4Stack=true"

Ich weiss auch nicht wirklich wie und was du nutzt, wie du was startest, aber wenn du es nicht schaffst dir ausgeben zu lassen was letztlich genutzt wird, dann wird es auch schwierig irgendwas zu setzen, dass dann auch angenommen wird.

Ansonsten nimmt die JVM auf deinem System gerne auch 30G, wenn das zur Verfügung steht.


#10

das hab ich ja in der standalone.conf der wildfly installlation, aber es wird ignoriert.

Nun hab ich das eingerahmte auskommentiert und deine zeile unten eingefügt und siehe da, beim startup werden die werte ausgegeben, aber in dem if Konstrukt klappte es nicht. Nun mal sehen ob es jetzt auch mehr als 2GB nimmt. Bisher ist der Memory stabil bei 14,1 % vorher ging er bis auf 45% und dann kackte es ab. Ich hoffe es klappt jetzt wie es soll. Mir ist zwar immer noch ein Rätsel, warum das in dem if then nicht geht, aber naja. Wer weiß was das da prüft, dass kann ich nicht lesen

Mehr RAM Zuweisung = mehr gleichzeitige Threads und schnelleres Abarbeiten der Threads? Kann man das so sagen?


#11

Aber dir ist schon klar, dass in der ersten Zeile die Timezone gesetzt wird und in der nächsten Zeile das setzen der Timezone überschrieben wird.

Deshalb steht in dem auskommentierten ja auch in der zweiten Zeile des if-Statements $JAVA_OPTS am Anfang um das dahinterstehende hinzuzufügen.

Zudem wird diese Zeile nun weggelassen.

Nur so als kleiner Hinweis.


#12

Ja hab ich grad gemerkt, dass die Zeit wieder nicht stimmt, hab sie jetzt darunter mit eingefügt, das passt nun wieder.