28.05.2010 1 Profiling und Monitoring von Web-Anwendungen „Quality of Service“ mit Profiling und Monitoring sicherstellen Hendrik Neumann W3L GmbH www.W3L.de Vortrag auf dem sechsten Treffpunkt@IT-Ruhr in Witten am 27.05.2010 www.IT-Ruhr.de 2 Agenda Teil 1: Vortragsfokus Teil 2: Profiling der Netzwerkkommunikation mit Fiddler Teil 3: Profiling des Clients mit Firebug Teil 4: Profiling des Application-Servers mit JProfiler Teil 5: Fallbeispiel „Erkennen von Speicherlecks“ Teil 6: Monitoring der gesamten IT-Infrastruktur mit Nagios/Icinga Teil 7: Monitoring der Java-VM: Java Management Extensions (JMX) Teil 8: Fallbeispiel „Erkennen von Deadlocks“ Fallbeispiel Speicherleck Fallbeispiel Deadlock zurück Copyright W3L GmbH 1 28.05.2010 3 Vortragsfokus Entwicklungszyklus einer Web-Applikation Für Entwicklung viele Tools und Vorgehensweisen Aber: „viele“ Probleme treten erst beim Kunden auf! Nebenläufigkeitsprobleme Verfügbarkeit / Antwortzeiten / Latenzzeiten Clientseitige Laufzeitprobleme Vortragsfokus Erfahrungen aus der Praxis zur Lösung solcher Probleme die erst kurz vor- oder nach der Veröffentlichung auftreten Quality of Service Performance und Stabilität mit Profiling verbessern Verfügbarkeit mit Monitoring überwachen und Fehler identifizieren Copyright W3L GmbH 4 Umgebung im eigenen Haus Profiling Detaillierte Informationen über das Verhalten der Software Speicherlecks und PerformanceProbleme erkennen Profil-Abbilder erstellen und vergleichen Nachteile Performanceeinbruch im Betrieb Kontext aus Sicht der Benutzeranzahl und Systemumgebung unrealistisch Keine permanente Überwachung möglich/ratsam Copyright W3L GmbH 2 28.05.2010 5 Umgebung beim Kunden Monitoring Automatisierte Überwachung einer Applikation Verfügbarkeit überwachen Fehler im laufenden Betrieb aufspüren Vorteile Über jeden Fehler informiert – zeitnaher Support möglich (Idealfall: bevor sich der Fehler beim Kunden bemerkbar macht) Detaillierte Informationen über Nutzerverhalten Nachteile Fehler werden erst erkannt, wenn es u.U. zu spät ist. Keine tiefgehenden Informationen, warum Probleme auftraten (?) Copyright W3L GmbH 6 Profiling von Web-Applikationen Firebug Copyright W3L GmbH 3 28.05.2010 7 Fiddler als HTTP-Profiling-Werkzeug HTTP debugging proxy Entwickelt von einem Microsoft-Mitarbeiter Beim Start automatische Integration in IE und FF (Extension) Funktionsumfang Speicherung der gesamten HTTP-basierten Netzwerk-Kommunikation HTTPS-Verschlüsselung Entschlüsselung der Kommunikation Jeder Request/Response kann inkl. statistischer Daten eingesehen und gespeichert werden Brakepoints: Bei bestimmten Filter-Kriterien anhalten und ggf. Request-Parameter und/oder Response ändern Remote-Verbindung möglich (auch ohne Installation und ohne Administrator-Rechte) Request-Builder: Requests erneut abschicken und Daten frei manipulieren Copyright W3L GmbH 8 Javascript Profiling mit Firebug Erweiterung für Firefox Spezial-Anwendung für Analyse von Webseiten Inkl. des manipulierten DOM-Baumes Anwendungen Debugging Monitoring Profiling Monitoring-Funktionen Zeitliche Abfolge der HTTP-Requests inkl. statistischer Daten Profile-Funktionen Funktionsaufrufe loggen Zeitmessung Prozentuale Verteilung Genaue Zeitdauer einzelner Methodenaufrufe inkl. Verschachtelung (welche Methode wird aus welchem Kontext aufgerufen) Copyright W3L GmbH 4 28.05.2010 9 ej-technologies JProfiler Kommerzielles Profiling-Programm für Java Features Kein Konfigurationsaufwand und sehr intuitive Benutzerführung Vordefinierte Templates für bestimmte Profilingziele (z.B. „Performance bottleneck“) Profiling Daten werden in Echtzeit, also während das Programm läuft, präsentiert Trigger Visualierung des Heapspeichers ermöglicht schnelles Auffinden von Speicher-Lecks Integration in alle gängigen IDEs und Application-Server Aufgaben von Kommandozeile ausführen On-Demand-Profiling: ermöglicht Integration in laufende Systeme Copyright W3L GmbH 10 Profiling-Fallbeispiel Speicherleck Ziel: Erkennen von Speicherlecks Szenario Entwicklung eines CMS (Office2Web Dokumentenmanagement) Anforderungen aus Pflichtenheft realisiert Abschließendes Testen in der Firma Mitarbeiter bemerkt Speicheranstieg bei fortlaufender Interaktion mit der Anwendung Applikation reagiert nicht mehr Aufgabe: Engpass und Speicherleck finden Copyright W3L GmbH 5 28.05.2010 11 Monitoring von Web-Applikationen Copyright W3L GmbH 12 Nagios / Icinga Was ist Nagios? Monitoring Plattform zur Überwachung von IT-Infrastrukturen Modulares Konzept (C, C++, C#, Java, Perl, Python, PHP) Open-Source Werkzeug mit großer Gemeinde („Quasi-Standard“) Viele externe Erweiterungen PerfParse: Performance-Analyse von Datenbanken Zahlreiche Visualisierungsmöglichkeiten Icinga Bei Nutzern größere Unzufriedenheit über Bugfixing, neue Features, GUI, Verhalten gegenüber der Community Gründung eines Nagios-Forks von unzufriedenen NagiosEntwicklern/Anwendern: Icinga (März 2009); Aktuelle Version: 1.0.1 Plattform: Unix/Linux Clients Nagios Checker als Firefox-Erweiterung Nagstamon als Desktop-Client Copyright W3L GmbH 6 28.05.2010 13 Monitoring: Java Management Extensions (JMX) Spezifikation zur Verwaltung und zum Monitoring von JavaAnwendungen, implementiert in JVM ab Version 1.5, größere Änderungen in Java 6 Unterstützung aller gängiger Application-Server und ServletContainer Überblick Zu überwachende Ressourcen werden als MBeans implementiert Objekt-Repository enthält zu verwaltende Objekte Management Agent verwaltet Repository und realisiert Management Infrastruktur Einfache Integration in bestehende Anwendungen Management-Tools JConsole als integraler Bestandteil von JDK 1.5 Abfrage möglich mittels JMX-Querys Copyright W3L GmbH 14 Architektur-Übersicht der JMX Copyright W3L GmbH 7 28.05.2010 15 MBean-Komponenten „Managed Bean“: per dependency injection erzeugte JavaBean Aufgaben Applikationseinstellungen verändern (pull) Statistiken für Performance-, Zugriffs- oder Problemanalysen sammeln Events bei Statusänderungen, Fehlern etc. auslösen Nagios und JMX Mehrere Module verfügbar Java Programm muss mit JMX-Freigabe gestartet werden Abfragen in Konfiguration eintragen -Dcom.sun.management.jmxremote.port=9958 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false Copyright W3L GmbH 16 Fallbeispiel Erkennen von Deadlocks Ziel: Monitoring mit JMX und Nagios realisieren Szenario Web-Applikation reagiert bei dem Kunden nicht mehr Analyse mit Fiddler hat ergeben, dass Client korrekt arbeitet Server gibt keine Fehlermeldungen aus Vermutung: Deadlock Aufgabe: Deadlock finden Copyright W3L GmbH 8 28.05.2010 17 JMX und Nagios Interface Registrierung der MBean Copyright W3L GmbH 18 JMX und Nagios Copyright W3L GmbH 9 28.05.2010 19 JMX und Nagios define command{ command_name command_line JMXDeadlock /usr/lib/nagios/plugins/check_jmx -U service:jmx:rmi:///jndi/rmi://ip:9958/jmxrmi -O de.w3l:type=DeadlockDetection -A DeadlockedThreads -I DeadlockedText -w 1 -c 10 } define service{ use host_name service_description check_command normal_check_interval retry_interval check_interval } generic-service Entwicklung DeadlockErkennung JMXDeadlock 1 1 1 Copyright W3L GmbH 20 JMX und Nagios JMX-Erweiterung check_jmx check_jmx Copyright W3L GmbH 10 28.05.2010 21 JMX und Nagios Copyright W3L GmbH 22 Produkt-Websites Profiling Netbeans IDE: http://www.netbeans.org/ Eclipse Test & Performance Tools: http://www.eclipse.org/tptp/ JProfiler: http://www.ej-technologies.com/products/jprofiler Monitoring Fiddler: http://www.fiddler2.com JMX: http://java.sun.com/javase/technologies/core/mntrmgmt/javamanagement/ Nagios: http://www.nagios.org/ Nagions-JMX-Erweiterung: ICINGA: http://www.icinga.org/ Sonstiges Roadmap für Java 7: http://openjdk.java.net/projects/jdk7/ Copyright W3L GmbH 11 28.05.2010 23 Literatur, Tutorials und interessante Quellen JavaTM Management Extensions (JMXTM) Specification, version 1.4 http://java.sun.com/javase/6/docs/technotes/guides/jmx/JMX_1_4_s pecification.pdf Monitoring mit JMX, JConsole und MBeans (Sun Tutorials): http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html http://java.sun.com/docs/books/tutorial/jmx/mbeans/standard.html Nagios-Plugin-Verzeichnis http://www.nagiosexchange.org/ JSR 255 (JMX 2.0) http://jcp.org/en/jsr/detail?id=255 http://weblogs.java.net/blog/2008/04/25/query-language-jmx-api Copyright W3L GmbH 24 Vielen Dank für Ihre Aufmerksamkeit (Weitere) Fragen? Copyright W3L GmbH 12