JMX_Monitoring

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