oracle ad4j – your troubleshooter - trivadis.com diagnostics for java ... (teil von oracle...
TRANSCRIPT
Basel · Baden · Bern · Lausanne · Zürich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · München · Stuttgart · Wien
Oracle AD4J – Your Troubleshooter
DOAG Konferenz 2009
Markus [email protected]
Nürnberg, 18.11.2009
© 2008© 2009
Trivadis Facts & Figures
2
Über 540 Mitarbeiter an 13 Standorten im Raum D-A-CH
Finanziell unabhängig und nachhaltig profitabel
Kennzahlen 2008
Konsolidierter Konzernumsatz: CHF 108 Mio. / EUR 68 Mio.
Bei über 650 Dienstleistungs-kunden in über 1'600 Projekten aktiv
Über 150 Service Level Agreements
Über 5'000 Schulungsteilnehmer
Forschungs- und Entwicklungs-budget: CHF 6.0 Mio. / EUR 3.6 Mio.
© 2008© 2009
Kundenindividuelle Lösungskompetenz und
Herstellerunabhängigkeit
Trivadis - das Besondere
3
bietet fundierte Methodenkenntnisse und eigenentwickelte Vorgehensweisen garantiert wiederholbare Qualität und Realisierungssicherheit
Technologiekompetenz hat über 15 Jahre Expertise in Oracle, Microsoft, IBM & Open Source verfügt über ein eigenes Technology Center und setzt auf technologische Exzellenz
Lösungs- und Integrations-Know-how
hat eine breite, branchenübergreifende Kundenbasis und jährlich über 1600 Projekte verbindet technologisches Spezialistenwissen mit dem Verständnis für die Business-Spezifika des Kunden
Begleitung über den gesamten IT-Projekt-
Lifecycle
begleitet den gesamten IT-Projekt-Lifecycle mit einem modularen Dienstleistungsportfolio bietet für jeden „Reifegrad“ die passende Dienstleistungs- und Lösungskombination
© 2008Oracle AD4J 5
Troubleshooting Challenges
Unklare Problemstellung
Unbekanntes System
Hohe ErwartungshaltungFachbereich vs. Betrieb
„Don‘t touch a running System“-SyndromRestriktiver Zugang zum produktiven SystemGeringe Möglichkeiten zur Einflußnahme
© 2008
Application Diagnostics for Java (AD4J)
Untersuchung der Probleme in produktiven Umgebungennicht im Testsystem
verkürzt Zeit bis zur Lösung des Problems
Monitoring von Applikationen mit Grenzwertüberwachung und Notifikation
Ermöglicht proaktive Maßnahmen
Zur Anzeige der Java Aktivitäten ist keine Instrumentierung notwendig
Hot Deployment
Minimal Runtime Overhead (<1%)
Standalone Tool (Teil von Oracle Enterprise Manager 10g R4)Oracle AD4J 6
© 2008
Usage Scenarios
1. Memory Leak Detection and Analysis
2. Activity Monitoring and Diagnostics
3. Elapsed Time Analysis
4. Cross-tier correlation with DB
Oracle AD4J 7
© 2008
Installation
Console InstallationConsole Web-Applikation (JServ)AD4J Repository – Postgres DBCertification Authority (CA) und self-signed Certificatefür HTTPS Zugriff auf Web-ApplikationAbhängig von OS-Plattform
Windows, Linux, AIX, Solaris, HP-UX
Agent InstallationDownload Agent aus der ConsoleJava Agent – local-remote, WAR-EAR, standalone ZIP
Abhängig von zu beobachtender JVMJDK 1.3.1-1.6
DB Agent – 32/64 bit, OS-abhängigOracle 8i-11g, keine Windows-DB Unterstützung
Oracle AD4J 9
© 2008
Deployment
Hot Deployment bei Web und Application ServernKein Restart von Applikation oder Server notwendig
Keine Änderungen an JVM-Parametern oder derApplikationskonfiguration
JVM Schnittstelle JVMPI/JVMTI (Java Virtual Machine Tool Interface) wird nicht verwendet
Kein Classloader “Zirkus”
Standalone ApplicationAD4J Agent startet zu untersuchende ApplikationParameter „ jamisdaemon = true“
Agent verwendet JNI – OS abhängige shared Lib
Oracle AD4J 10
© 2008
Kundeneinsatz - Problembeschreibung
System:OutputManagement System mit Input als Word-Serienbrief und Output als AFP-Stream
Problembeschreibung:„Auf dem produktiven System tritt während der Verarbeitung von HTTP-Requests auf dem Server eine OutOfMemoryExceptions auf (Java Heap Space). D.h., dass zu diesem Zeitpunkt die JVM nicht mehr genügend freien Speicher zur Verfügung hat, um neue Speicheranforderungen zu bedienen.“
Der Fehler tritt nahezu täglich aufAuf Fehler folgt manueller RebootEs kann bis zum nächsten Fehler wieder gedruckt werden
Oracle AD4J 12
© 2008
Potentielle Ursachen – „Is it a Bug or a Feature?“
Das Problem kann verschiedene Gründe haben:Die Ressourcen von Tomcat sind zum Zeitpunkt des Fehlers vollständig belegt, weil entsprechend viele Sessions parallel arbeitenBei jedem HTTP Request geht Speicher verloren, d.h., es werden Objekte in der JVM nicht freigegeben, obwohl sie nicht mehr gebraucht werden (Memory Leak)
Falsche Konfiguration in der Applikation oder in TomcatBug in der Applikation bzw. den verwendeten Libraries
AD4J Usage Scenario „Memory Leak Detection and Analysis“
Oracle AD4J 13
© 2008
Vorgehen
ZielVerantwortliche Objekte für den Speicherzuwachs identifizieren
MaßnahmeUntersuchung von mehreren Heap Dumps
Durchführung1. Word erzeugt ein Serienbrief (ca. 70 Seiten)
1. Mittels mehreren HTTP-Requests an OMS übergeben2. OMS verarbeitet das Dokument3. Nach ca. 5 min (eingestellter Session Timeout) wurde ein
Heapdump der Serverapplikation durchgeführt. 4. Dump wurde auf den AD4J Server Rechner übertragen5. Dump in AD4J Console zur weiteren Analyse geladen
Oracle AD4J 14
© 2008
Heap Usage
Nacheinander Heapdumps in AD4J laden
Compare HeapsMittels eines DIFF zweier aufeinanderfolgender Heapdumps ergibt sich in AD4J
Oracle AD4J 16
1
2
3
© 2008
Compare Heap
Speicherverbrauch des Heaps von einem Druck zum nächsten
Klick auf „Dictionary“führt zur detaillierten Darstellung der ab-hängigen Objekte
Oracle AD4J 17
© 2008
Ursache gefunden
Hauptverantwortlich Klassen für den Speicherzuwachs gefunden
Drilldown der Objekte möglichAnsicht von Children, Parents und Roots
Oracle AD4J 18
© 2008
Standalone Application
Beispiel TOMAS Is there a memory leak?
Start der Komponente „Renderer“ mittels AD4JSkript:
Oracle AD4J 19
java.exe -Xmx512m -Dlog4j.configuration=file:/config/log4j.properties -cp tomas-rendering-0.5.0.jar;C:\tmp\jamagent.zip jamagent.jamrun jamisdaemon=true jamjvmid=Renderercom.trivadis.tomas.rendering.starter.RenderingStarter%* config/rendering.xml
© 2008
Fazit
NachteileWeb-lastig:
HTTP Request/Response als „natürliche“ KlammerWas ist mit Demons/Standalone Applikationen?
Webapplikation nicht ganz fehlerfreiDokumentation sehr sparsam
VorteileMemory Leak Detection funktioniert einfachEasy to installEasy to useIn produktiven System einsetzbar, geringer Overhead
Als Überwachungstool für sensitiven Zeitraum nutzbar
Oracle AD4J 21
© 2008
Ressourcen
Trivadis:http://blog.trivadis.com/blogs/christianantognini/archive/2009/02/13/oracle-ad4j-installation-on-linux.aspx
OTN:http://www.oracle.com/technology/software/products/oem/htdocs/jade.htmlhttp://www.oracle.com/enterprise_manager/fusion-middleware-management-packs.htmlhttp://www.oracle.com/technology/products/oem/mgmt_solutions/apm.htmlhttp://www.oracle.com/technology/products/oem/as_mgmt/index.html
http://oukc.oracle.com/static05/opn/oracle9i_database/47240/021408_47240_source/index.htm, Flash Slide Show (Hörspiel)
www.ukoug.org/assets/uploads/otherpages/MarkMcGillJava15.25.pdf
Oracle AD4J 22