High-End Output Management Systeme mit Oracle und Java
Transcrição
High-End Output Management Systeme mit Oracle und Java
Oracle AD4J – Your Troubleshooter DOAG Konferenz 2009 Markus Heinisch Architekt [email protected] Nürnberg, 18.11.2009 Basel · Baden · Bern · Lausanne · Zürich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · München · Stuttgart · Wien Trivadis Facts & Figures Ü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 Dienstleistungskunden in über 1'600 Projekten aktiv à Über 150 Service Level Agreements à Über 5'000 Schulungsteilnehmer à Forschungs- und Entwicklungsbudget: CHF 6.0 Mio. / EUR 3.6 Mio. 2 © 2009 2008 Trivadis - das Besondere Kundenindividuelle Lösungskompetenz und Herstellerunabhängigkeit Technologiekompetenz bietet fundierte Methodenkenntnisse und eigenentwickelte Vorgehensweisen garantiert wiederholbare Qualität und Realisierungssicherheit 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-ProjektLifecycle begleitet den gesamten IT-Projekt-Lifecycle mit einem modularen Dienstleistungsportfolio bietet für jeden „Reifegrad“ die passende Dienstleistungs- und Lösungskombination 3 © 2009 2008 Agenda Einführung AD4J Kundeneinsatz Fazit Daten sind immer im Spiel. Oracle AD4J 4 © 2008 Troubleshooting Challenges Unklare Problemstellung Unbekanntes System Hohe Erwartungshaltung à Fachbereich vs. Betrieb „Don‘t touch a running System“-Syndrom à Restriktiver Zugang zum produktiven System à Geringe Möglichkeiten zur Einflußnahme Oracle AD4J 5 © 2008 Application Diagnostics for Java (AD4J) Untersuchung der Probleme in produktiven Umgebungen à nicht 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 Quelle: „Oracle Application Diagnostics for Java (AD4J)“, OTN Oracle AD4J 8 © 2008 Installation Console Installation à Console Web-Applikation (JServ) à AD4J Repository – Postgres DB à Certification Authority (CA) und self-signed Certificate für HTTPS Zugriff auf Web-Applikation à Abhängig von OS-Plattform Windows, Linux, AIX, Solaris, HP-UX Agent Installation à Download Agent aus der Console à Java Agent – local-remote, WAR-EAR, standalone ZIP Abhängig von zu beobachtender JVM JDK 1.3.1-1.6 à DB Agent – 32/64 bit, OS-abhängig Oracle 8i-11g, keine Windows-DB Unterstützung Oracle AD4J 9 © 2008 Deployment Hot Deployment bei Web und Application Servern à Kein Restart von Applikation oder Server notwendig Keine Änderungen an JVM-Parametern oder der Applikationskonfiguration JVM Schnittstelle JVMPI/JVMTI (Java Virtual Machine Tool Interface) wird nicht verwendet à Kein Classloader “Zirkus” Standalone Application à AD4J Agent startet zu untersuchende Applikation à Parameter „ jamisdaemon = true“ Agent verwendet JNI – OS abhängige shared Lib Oracle AD4J 10 © 2008 Agenda Einführung AD4J Kundeneinsatz Fazit Daten sind immer im Spiel. Oracle AD4J 11 © 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 auf à Auf Fehler folgt manueller Reboot à Es 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 arbeiten à Bei 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 Tomcat Bug in der Applikation bzw. den verwendeten Libraries Î AD4J Usage Scenario „Memory Leak Detection and Analysis“ Oracle AD4J 13 © 2008 Vorgehen Ziel à Verantwortliche Objekte für den Speicherzuwachs identifizieren Maßnahme à Untersuchung von mehreren Heap Dumps Durchführung 1. Word erzeugt ein Serienbrief (ca. 70 Seiten) 1. Mittels mehreren HTTP-Requests an OMS übergeben 2. OMS verarbeitet das Dokument 3. Nach ca. 5 min (eingestellter Session Timeout) wurde ein Heapdump der Serverapplikation durchgeführt. 4. Dump wurde auf den AD4J Server Rechner übertragen 5. 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 Heaps à Mittels eines DIFF zweier aufeinander folgender Heapdumps ergibt sich in AD4J 2 1 3 Oracle AD4J 16 © 2008 Compare Heap Speicherverbrauch des Heaps von einem Druck zum nächsten Klick auf „Dictionary“ führt zur detaillierten Darstellung der abhängigen Objekte Oracle AD4J 17 © 2008 Ursache gefunden Hauptverantwortlich Klassen für den Speicherzuwachs gefunden Drilldown der Objekte möglich à Ansicht von Children, Parents und Roots Oracle AD4J 18 © 2008 Standalone Application Beispiel TOMAS à Is there a memory leak? Start der Komponente „Renderer“ mittels AD4J à Skript: 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=Renderer com.trivadis.tomas.rendering.starter.RenderingStarter %* config/rendering.xml Oracle AD4J 19 © 2008 Agenda Einführung AD4J Kundeneinsatz Fazit Daten sind immer im Spiel. Oracle AD4J 20 © 2008 Fazit Nachteile à Web-lastig: HTTP Request/Response als „natürliche“ Klammer Was ist mit Demons/Standalone Applikationen? à Webapplikation nicht ganz fehlerfrei à Dokumentation sehr sparsam Vorteile à à à à Memory Leak Detection funktioniert einfach Easy to install Easy to use In 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/or acle-ad4j-installation-on-linux.aspx OTN: à http://www.oracle.com/technology/software/products/oem/htdocs/jade.html à http://www.oracle.com/enterprise_manager/fusion-middleware-managementpacks.html à http://www.oracle.com/technology/products/oem/mgmt_solutions/apm.html à http://www.oracle.com/technology/products/oem/as_mgmt/index.html http://oukc.oracle.com/static05/opn/oracle9i_database/47240/021408_4 7240_source/index.htm, Flash Slide Show (Hörspiel) www.ukoug.org/assets/uploads/otherpages/MarkMcGillJava15.25.pdf Oracle AD4J 22 © 2008 Weitere Fragen? Trivadis finden Sie auf Ebene 3 – Stand Nr. 304 ? www.trivadis.com Basel · Baden · Bern · Lausanne · Zürich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · München · Stuttgart · Wien