Immer wieder wird das Thema Tuning von Oracle Forms und Reports Anwendungen diskutiert. Ich möchte mit diesen Beiträgen versuchen einen kleinen Überblick der Möglichkeiten offen zu legen. Es wird nicht immer alles getroffen werden, aber es sollte einem doch schon die eine oder andere Idee liefern.
Warum eigentlich Tuning Weblogic / Oracle Fusion Middleware 11g. Bei jedem Kunden Gespräch oder bei jeder Kundeninstallation kommen gerade im Umfeld von Oracle Forms und Reports immer wieder dieselben Fragen zum Tragen. Das fängt an mit der Frage nach der Hardware, geht dann über welches Betriebssystem bis hin wie groß muss der Heap Size von dem WLS_FORMS Manged Server sein.
Um in dieses Thema einzusteigen bediene ich mich erst einmal des Vortrages, der Thomas Robert von der Oracle am 29. August 2012 in Köln auf der SIG Middleware gehalten hat. Ich möchte an dieser Stelle erst einmal verstehen wie das Layout des Java Memory aussieht.
Was bedeuten eigentlich die Heap-Size Parameter inerhalb einer JVM von Oracle / Sun. Wie ich in der Veranstaltung gelernt habe verwaltet eine JVM unterschiedliche Speicherbereiche. Warum ist das eigentlich so?
- Die meisten Objekte innerhalb meiner Anwendung sind temporär, werden also nur kurze Zeit benötigt z.B. Ausgabe eines Strings
- Lang lebende Objekte sind Objekte die sich durch die Anwendung ziehen z.B. “Globale” Informationen
Diese beiden Bereiche werden “Generations” genannt.
- Young Generation für kurzlebige Objekte
- Old Generation für langlebige Objekte
In der Java HotSpot Virtual Machine, sind die Gruppen unterteilt
Heap Speicher
Eden Space (young generation): Pool von Objekten, deren Speicher gerade erst allokierd wurde (noch kein GC Lauf)
Survivor Space 0 (young generation): Pool von Objekten, die den GC Lauf des Eden Space überlebt haben
Survivor Space 1(young generation): Pool von Objekten, die den GC Lauf des Eden Space überlebt haben
Tenured (Old) Generation: Pool von Objekten, die eine bestimmte Anzahl GC Läufe des Survivor Spaces überlebt haben
Permanent Generation (PermGen) Non Heap
Speicherort für die Klassen
Nicht im Heap
Kein JVM Standard
Quelle: Thomas Robert Tuning Oracle Fusion Middleware 11g 29.August 2012 SIG Köln
Die wichtigsten Befehle um den Heap zu beeinflussen sind:
-XX:NewRatio=[Verhältnis]
Verhältnis zwischen young und old Generation
-XX:NewRatio=3 erzeugt ein Verhältnis 1:3
-XX:SurviverRatio=[Verhältnis]
Verhältnis zwischen eden und survivor Generation
-XX:SurviverRatio=3 erzeugt ein Verhältnis 1:3
-XX:GCTimeRatio=[n]
Zeit, die der Garbage Collector in der gesamten application time
verwenden darf (berechnung 1/(1+n))
-XX:GCTimeRatio=19 führt also zu 1/20 also 5% der Gesamtzeit. Defaut ist 99, also 1%.
In dem nächsten Beitrag werde ich versuchen zu klären ob ich das ganze eigentlich für Forms/Reports gebrauchen kann.
Die Teilnehmer meines Kurse mögen bitte nicht weiter lesen, da dieses auch eines der Schulungsthemen sein wird. Schulung