Ein schlankes Java-Performance-Analysetool

inspectIT: Java-Performance auf dem Prüfstand

Stefan Siegl und Patrice Bouillet

Die Disziplin Application Performance Management (APM) wird im Entwicklungsprozess oft sträflich vernachlässigt, weil der Aufwand für die Einführung eines geeigneten Werkzeugs und der Aufbau des notwendigen Know-hows gescheut wird. inspectIT schließt diese Lücke und ermöglicht die tiefgehende Analyse des Laufzeitverhaltens von Java-Anwendungen bei gleichzeitig sehr einfacher Bedienbarkeit.

inspectIT basiert auf einer verteilten Architektur, bei der Agenten die Daten zur Performanceanalyse aus der JVM heraus ermitteln. Diese Daten werden kontinuierlich an ein Repository gesendet und von einer Eclipse-RCP-basierten Anwendung aus analysiert. Die Agenten instrumentieren das zu analysierende System mithilfe von speziellen Sensoren zur Laufzeit, ohne den Sourcecode oder die Logik der Anwendungen zu berühren. Die Komponenten von inspectIT können auf beliebigen Rechnern im Netzwerk installiert werden und sind in ca. einer Stunde konfiguriert und startbereit. Welche Sensoren eingesetzt und welche Klassen analysiert werden sollen, wird vom Anwender über eine Konfigurationsdatei bestimmt. Im Folgenden schauen wir uns die im Lieferumfang enthaltenen Sensoren an. Weitere Sensoren können selbst oder durch den Hersteller erstellt und eingebunden werden.

Timer-Sensor: Überwacht die Ausführungszeit der Methoden einer Anwendung. Der Sensor liefert sowohl die reinen Methoden- als auch die CPU-Zeit, die eine Methode beansprucht hat. Dies gibt Aufschluss darüber, ob der Grund für die lange Ausführungsdauer der Methode die eigene komplexe Logik war oder ob sie z.B. auf eine parallele Verarbeitung warten musste.

Platform-Sensor: Überwacht Systemressourcen wie CPU-Auslastung, Speicherauslastung, Threads, Klassen und JVM-Parameter und liefert so detailliert Auskunft über den Zustand des Systems zur Zeit der Ausführung.

DB-Sensor: Da Datenbankabfragen sehr oft einen Flaschenhals bei der Performance von Anwendungen darstellen, ist der Datenbanksensor besonders wichtig. Er erlaubt es, die Dauer und Struktur von Datenbankabfragen zu überwachen.

Invocation-Sensor: Liefert eine detaillierte Auflistung der Aufrufstruktur inklusive der Informationen, welche Methoden vom Benutzer aufgerufen wurden und welche Methoden bei der Ausführung der Logik wie lange gedauert haben. Diese Funktion ist von unschätzbarem Wert, um Aufrufe zu prüfen, die nur sporadisch langsam sind bzw. um eine tiefer gehende Analyse einer bestimmten Funktionalität durchzuführen. Die Aufrufstruktur wird im User Interface inklusive der Daten anderer Sensoren, z.B. die der DB-Sensoren, dargestellt.

Exception-Sensor: Der Exception Sensor wird aktiv, sobald Fehlerfälle im Programmcode auftreten. Fehler werden direkt sichtbar gemacht, auch wenn die Applikation sie nicht oder falsch behandelt.

User Interface

Die Oberfläche (siehe Abb. 1) von inspectIT ist einfach zu bedienen und erlaubt es, schnell wichtige Informationen über die Performanceindikatoren einer Anwendung zu bekommen. Eine Installation im herkömmlichen Sinn ist nicht nötig. Man packt die Dateien aus, startet die Anwendung und verbindet sich mit einem Repository, von dem man lediglich IP-Adresse und Port kennen muss. Durch die Flexibilität der Eclipse-RCP-Basis lassen sich verschiedenste Informationen so anordnen und gruppieren, wie der Anwender sie benötigt. Analysedaten lassen sich außerdem für
spätere Vergleiche abspeichern.

Abb. 1: Das User-Interface von inspectITAbb. 3: Das generierte Java-API (Vergrößern)

Fazit

Die Ausreden, APM nicht zum Bestandteil des Entwicklungsprozesses zu machen, werden immer weniger. Ein Tool wie inspectIT hilft dem Praktiker bei der Argumentation, nicht länger zu warten und sich dem Thema möglichst schnell zu widmen, um so Performanceprobleme gar nicht erst aufkommen zu lassen. Denn gerade auch in diesem Bereich gilt: je früher ein Problem erkannt wird, desto billiger wird die Behebung.

Weiterführende Informationen zum Tool finden Sie unter http://www.inspectIT.eu.

Geschrieben von
Stefan Siegl und Patrice Bouillet
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.