23
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 Heinisch Architekt [email protected] Nürnberg, 18.11.2009

Oracle AD4J – Your Troubleshooter - trivadis.com Diagnostics for Java ... (Teil von Oracle Enterprise Manager 10g R4) Oracle AD4J. 6 ... (Java Virtual Machine Tool Interface)

Embed Size (px)

Citation preview

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 4

Agenda

Daten sind immer im Spiel.

Einführung AD4J

Kundeneinsatz

Fazit

© 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

Systemaufbau

Oracle AD4J 8

Quelle: „Oracle Application Diagnostics for Java (AD4J)“, OTN

© 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

© 2008Oracle AD4J 11

Agenda

Daten sind immer im Spiel.

Einführung AD4J

Kundeneinsatz

Fazit

© 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

AD4J

Hinweis: Heapdump Verzeichnis konfigurieren

Dump erzeugen

Oracle AD4J 15

© 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

© 2008Oracle AD4J 20

Agenda

Daten sind immer im Spiel.

Einführung AD4J

Kundeneinsatz

Fazit

© 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

Basel · Baden · Bern · Lausanne · Zürich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · München · Stuttgart · Wien

Weitere Fragen?Trivadis finden Sie auf

Ebene 3 – Stand Nr. 304

?www.trivadis.com