Red Hat Oracle Java

Wer darauf auf Red Hat angewiesen ist und auch noch ein Oracle Java dazu benötigt, findet eine schöne Lösung direkt bei Red Hat.
Bei Ubuntu gibt es ja diverse Launchpad quellen.

Wie der Channel in Red Hat eingebunden wird, steht hier

https://access.redhat.com/solutions/732883

Wer den Channel eingebunden hat kann dies dann am besten, so raussuchen was er denn möchte

yum list \*java-1\*

Dabei werden alle Java Versionen angezeigt die installierbar sind. Sehr praktisch ist auch das Kommando

update-alternatives –config java

There are 3 programs which provide ‘java’.

Selection Command
———————————————–
1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
+ 2 /usr/lib/jvm/jre-1.7.0-oracle.x86_64/bin/java
* 3 /usr/lib/jvm/jre-1.8.0-oracle.x86_64/bin/java

Enter to keep the current selection[+], or type selection number:

Tomcat garbage collection & Visual VM

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/

visualvm1 visualvm3 visualvm4

*update*

Hier habe ich auch noch was gutes gefunden

https://blogs.oracle.com/taylor22/entry/java_monitoring_and_tuning_example