https://nordpil.com/blog/add-another-instance-of-tomcat-on-ubuntu/
Ich hatte die Woche ein tolles Problem, der Tomcat hat einen 500 Fehler geworfen.
Da auf der Seite relativ viel Traffic ist, wird das Log relativ schnell zugemüllt beim Log Level Debug.
Ich habe hier ein tolles Tool gefunden um sich die Fehler in aller Ruhe anschauen zu können ohne den Log Level des Tomcat, nach oben schrauben zu müssen.
Das Tool nennt sich Jamon und damit läßt sich sehr gut der HTTP auslesen.
Problem,
es sollte ein Head Dump gezogen werden, im Betrieb.
Je nach Konfiguriertem Speicher, sollte genügend Plattenplatz vorhanden sein.
Der Befehl lautet
vorher noch mit ps aux | grep java oder tomcat die PID raus finden => 92221
sudo -u tomcat /usr/java/jdk1.7.0_55/bin/jmap -dump:format=b,file=heap.bin 92221
schon legt er eine Dump an
Mal wieder ein interessanter Fall.
Wie stelle ich die GC richtig ein
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -Xss256K
Das ist auf jedenfall eine Config die sehr gut arbeitet
Hier die ganze Config
JAVA_OPTS=”${JAVA_OPTS} -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -DtestoEnvironment=Prod -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -Xss256K -XX:PermSize=384M -XX:MaxPermSize=512M -Xmx16048m -Xmx16046m
Ob der ganze Tomcat von Anfang an 16 GB hat oder nicht müßt ihr selber entscheiden.
Wie kann ich die GC richtig kontrollieren. Dafür gibt es ein sehr gutes Tool nennt sich Visual VM
Dazu müßt ihr folgende Zeilen noch in der Tomcat.conf dazu geben, das sollte nach erfolgreichen Test abgeschaltet werden.
Kostet etwas Performance. Tomcat neustarten
#JAVA_OPTS=”-Dcom.sun.management.jmxremote.port=8086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.0.42″
Danach ist es möglich sich mit VisualVM zu verbinden und sich die Werte anzeigen zu lassen.
Hier ist es möglich eine Garbage Collection von Hand aus zu lösen, damit ist sehr leicht zu sehen, ob wir hier noch mehr fein tuning machen müssen.
Dazu habe ich noch einen Link wo dies genauer erklärt
http://www.dekho.com.au/realtime-monitoring-of-tomcat-cpu-and-memory-usage/
*update*
Hier habe ich auch noch was gutes gefunden
https://blogs.oracle.com/taylor22/entry/java_monitoring_and_tuning_example