Frontend
Konfiguration
- Auf dem Frontend läuft Tomcat.
- Installationsverzeichnis /app/tools/tomcat
- Tomcat-Laufzeit-UID: appadm
- Im Start-Skript /app/bin/tomcat.sh müssen die folgenden Optionen gesetzt werden und zwar nur bei der Option ‘start’, sonst kommt beim Stoppen die Fehlermeldung, dass der JMX-Port bereits belegt ist.
JAVA_OPTS=”-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=test-idc.internet2.edu”;
JMX Parameter über die GUI abfragen
- Einloggen auf einer nicht-produktiven Machine (der Load der Console ist zu hoch)/usr/java5_64/bin/jconsole app-pweb:8999
- man muss X-Fenster öffnen können (prüfen mit z. B. xclock)
- Bsp. ‘/usr/java5_64/bin/jconsole app-pweb:8999
Thread Dump
- Ein Thread Dump wird mit ‘kill -3 <pid>’ erstellt, wobei <pid> die Prozess-ID des Tomcat-Prozesses ist.
- Der Dump findet sich in /app/log/tomcat-cd/catalina.out.
- Ein Heap Dump wird zusätzlich erstellt, wenn der Java-Prozess mit der Option ‘-XX:+HeapDumpOnCtrlBreak’ gestartet wurde. Dies Option fügt man in /app/bin/tomcat.sh ein.
Backend
Konfiguration
- Auf dem Frontend läuft JBoss.
- Installationsverzeichnis /app/tools/jboss
- Jboss-Laufzeit-UID: appadm
- Im Start-Skript /app/bin/jboss.sh müssen die folgenden Optionen gesetzt werden und zwar nur bei der Option ‘start’, sonst kommt beim Stoppen die Fehlermeldung, dass der JMX-Port bereits belegt ist.
JAVA_OPTS=”-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=test-idc.internet2.edu”;
JMX Parameter über die GUI abfragen
- Einloggen auf einer nicht-produktiven Machine (der Load der Console ist zu hoch)/usr/java5_64/bin/jconsole app-psrv1:8999
- man muss X-Fenster öffnen können (prüfen mit z. B. xclock)
- Bsp. ‘/usr/java5_64/bin/jconsole app-psrv1:8999
OOM OutOfMemory
- jps -l
- jmap -heap $PID
- jmap -histo $PID
- jstack $PID
- logfile sichern
Welcher JVM-Thread lastet die CPU aus?
- Ermitteln der Thread-ID
- top starten und H drücken, dann wird für die JVM nicht mehr nur 1 Java-Process angezeigt, sondern alle Threads
- top
H
- Thread-Dump erzeugen
- kill -3 PID
- Output erfolgt nach
- Tomcat: /app/log/catalina.out
- Jboss: /app/log/jboss_stdout_stderr.log
- Thread-ID von decimal nach hex konvertieren
- perl -le ‘printf(“%x\n”, 255)’
- umgekehrt
- perl -le ‘print hex ff’
- Nun im Thread-Dump nach der Thread-ID als hex-String suchen