Tomcat / Java Tools

Vor einiger Zeit habe ich schon mal ein paar Dinge ueber Tomcat und Java festgehalten. Den Blogeintrag von damals gibt es hier:

Heute nochmal der Hinweis auf ein paar nuetzliche Tools hinterher

jvmtop

Das Tool ist wie „top“ auf der Kommandozeile, nur fuer die JVM. Wenn man ihm zum Beispiel die PID eines Tomcat Prozesses uebergibt, dann sieht man welche Threads wie viel CPU verbrauchen etc. Beispiel:

./jvmtop.sh $(pidof java)

URL: https://code.google.com/p/jvmtop/wiki/Documentation

 

Java Thread Dump Analyser

Mit dem Tool kann man sich den Inhalt eines Thread Dumps ein bisschen besser ausgewertet anzeigen lassen. Beispiel:

jstack -l $(pidof java) > /tmp/threaddump.txt
java -jar jtda.jar /tmp/threaddump.txt

URL: http://mchr3k.github.io/javathreaddumpanalyser/

 

VisualVM

Der Klassiker. Ueber JMX mit der JVM verbinden und dann alle moeglichen Informationen live daraus ziehen. Dafuer notwendige Konfiguration:

-Djava.rmi.server.hostname=localhost 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9991 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false

URL: http://visualvm.java.net/

 

psi-probe

Der „bessere“ Tomcat Manager. Wer noch den Klassischen nutzt sollte sich diese Applikation unbedingt angucken. Einfach die war in den Tomcat legen und den Benutzernamen den man fuer den Tomcat Manager vergeben hat dafuer mit nutzen.

URL: https://code.google.com/p/psi-probe/

 

Eclipse Memory Analyzer (MAT)

Wer seine JVM so konfiguriert hat das bei einem OutOfMemory Fehler ein HeapDump geschrieben wird, der kann diesen mit MAT am besten oeffnen und hineinschauen. Dafuer notwendige Konfiguration:

-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=/tmp/dumps/

URL: https://www.eclipse.org/mat/

Unix Timestamp vs. Java Timestamp

Wer als Sysadmin mit Java Entwicklern zu tun hat und beide wie selbstverstaendlich ueber Timstamps reden, dann gibt es doch einen entscheidenen Unterschied. Beide Timestamps geben die Zeit seit dem 01.01.1970 00:00:00h wieder. Unix Timestamps jedoch in Sekunden, Java Timestamps in Millisekunden.

Fuer die Praxis:

  • 01.01.2014 00:00:00 als Unix Timestamp:
    user@host:~$ date -d "2014-01-01 00:00:00" "+%s"
    1388530800
    user@host:~$
  • 01.01.2014 00:00:00 als Java Timestamp:
    usaer@host:~$ echo $(date -d "2014-01-01 00:00:00" "+%s")*1000 | bc
    1388530800000
    user@host:~$

HowTo: install Oracle Java in Ubuntu 13.04

$ java -version
$ sudo apt-get purge openjdk*
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer
$ java -version

via