Grenzen von VisualVM überwinden
Das Monitoring von CXF-Webservicemethoden ist ebenso zeitaufwendig wie unverzichtbar, liefert es doch wichtige Informationen, um möglichen Problemen, wie Performance- oder Speicherproblemen oder auftretenden Laufzeitfehlern, auf den Grund zu gehen und Prozesse zu optimieren. Ein gängiges Tool, über welches die entsprechenden Aufrufstatistiken – die über JMX (Java Management Extensions) nach außen zur Verfügung gestellt werden – abgerufen werden können, ist VisualVM. Das Tool bietet die Möglichkeit, notwendige Informationen, wie “number of invocations”, “average response time” oder “number of runtime faults” abzurufen. Dabei können die Webservicemethoden allerdings nur einzeln aufgelistet und angezeigt werden. Ein Nachteil: denn bei einer Vielzahl von Webservicemethoden lässt sich so nur schwer ein Überblick gewinnen. Abhilfe schafft hier die Programmierung des passenden Plugins – Expertise und Erfahrung in diesem Bereich vorausgesetzt.
Elementarer Bestandteil der Arbeit von Administratoren respektive Menschen, die operativ mit der Betreuung von Webservices beschäftigt sind, ist das Monitoring. Häufig wird ein immenser Aufwand betrieben, um die Performance und Speicherauslastung der Server sowie die Dienste auf mögliche Laufzeitfehler zu wachen. So können Unternehmen vor allem bei der Verwendung von Business-Anwendungen und darin auftretenden Problemen großen Schaden erleiden. Gerade wenn auf mehreren Servern CXF-Webservices laufen, die überprüft werden müssen, kann es dauern bis Verantwortliche sich einen Überblick verschafft haben und möglichen Problemen auf die Spur kommen. Wertvolle Ressourcen die an anderer Stelle ganz sicher sinnvoller eingesetzt werden könnten.
VisualVM: Das gängige Monitoring-Werkzeug
Ein Tool, welches in diesem Bereich häufig Verwendung findet ist VisualVM. Hierüber lässt sich die Aufrufstatistik, welche über JMX zur Verfügung gestellt wird, abfragen und benötigte Informationen anzeigen. Der Profiler für Java Applikationen wartet mit einer intuitiven grafischen Oberfläche auf und eignet sich gut um sogenannte Performance-Bottlenecks ausfindig zu machen oder den Speicherbedarf einer Anwendung nachzuvollziehen. So kann beispielsweise für eine Klasse die Anzahl der Instanzen und deren Speicherbedarf oder die Ausführungszeit einer Methode ausfindig gemacht werden. Darauf basierend lassen sich anschließend die entsprechenden Problemlösungs- oder Optimierungsstrategien anwenden bzw. entwickeln. Ein Grundproblem besteht jedoch: Die Webservicemethoden – die durchaus mehrere Hundert umfassen können – werden alle einzeln aufgelistet und angezeigt. Das hat für die Praxis zur Folge, dass ein erheblicher Zeitaufwand betrieben werden muss, wenn beispielsweise die durchschnittlichen Antwortzeiten von mehreren Webservice-Methoden, die auf mehreren Webservern verteilt sind, berechnet werden sollen – da die Werte manuell zusammengesucht werden müssen.
Das Potential von Open Source nutzen
Da VisualVM als eine NetBeans RCP (Rich Client Platform) Anwendung die Möglichkeit bietet, um Plugins erweitert zu werden, muss dieser Umstand jedoch nicht einfach hingenommen werden. Um bei Problemen möglichen Ursachen schneller auf den Grund zu kommen, ist eine übersichtliche Oberflächenstruktur und Aufbereitung der Daten die wichtigste Voraussetzung. Mit vorhandenem Know-how lässt sich ein Plugin schreiben, welches die benötigten Informationen in aggregierter und verbesserter Ansicht darstellt – ohne dass alle Webservicemethoden einzeln geöffnet werden müssten. Die einzelnen Server können so untereinander aufgelistet und die Werte der Methoden – wie “number of invocations”, “average response time” oder “number of runtime faults” – miteinander abgeglichen werden. Die einfachere Bedienbarkeit hat den Vorteil, dass die zeitaufwändige manuelle Suche entfällt und stattdessen ein wesentlich besserer Überblick geboten wird. Zusätzlich kann ein solches Plugin den Vorteil bieten, dass eine Sortierfunktion für die Tabellen integriert ist und Werte aus der Tabelle direkt in eine Excel-Datei überführt werden können.
Professionelle Hilfe schafft Ressourcen
Für die Programmierung eines solchen Plugins bedarf es fundierter Kenntnisse und langjähriger Erfahrung im Bereich der Individualentwicklung. Denn nur mit dem Wissen um die Auftrittshäufigkeit von bestimmten Problemen in der Praxis lassen sich ökonomische Lösungen verwirklichen, die im Arbeitsalltag tatsächlich greifen. Weitere Modifikation des Plugins sind denkbar: beispielsweise die Visualisierung anhand von Graphen. Hier müssen die individuellen Ansprüche eines jeden Unternehmens und der gewünschte Einsatzbereich eruiert und entsprechend bei der Umsetzung berücksichtigt werden – und kreative Programmierer die passende Lösung entwickeln. Hier ist Teamwork gefragt – die Zeit- und Kostenersparnis, welche die Optimierung der Geschäftsprozesse mit sich bringt, ist den Aufwand sicherlich Wert.
Christian Pohl, damaico GmbH & Co.KG, www.damaico.de
(erschienen Java Magazin 10/2014)