Letztes Mal habe ich über die Bedeutung von kontinuierlichen Leistungstests gebloggt. Wenn Sie Leistungstests genau wie Unit-Tests kontinuierlich schreiben und ausführen, erhalten Sie frühzeitig Erkenntnisse über die Leistung neuer und geänderter Funktionen Ihrer Software. So bleiben Überraschungen aus und Sie sind produktiver. Jetzt werde ich über Überwachung und Diagnose bloggen.
Abbildung: JAMon API start()- und stop()-Aufrufe in einem Spring-Interceptor
Jeder Zähler verwaltet Statistiken wie die Anzahl der Aufrufe, Durchschnitt, Maximum, Standardabweichung usw. und diese Informationen können angefordert werden. Die einzelnen Aufrufe werden nicht gespeichert. Dieser Ansatz führt zu einer geringen Speichernutzung und einem geringen Leistungs-Overhead, allerdings um den Preis eines gewissen Informationsverlusts. Vor kurzem ist ein neuer Konkurrent von JAMon erschienen:
Abbildung: JARep zeigt den Trend zu steigenden Antwortzeiten ab dem 15. Oktober auf zwei der vier Produktions-JVMs.
Kundengeschichte
Wir hatten folgende Situation bei unserem Kunden. Die Bearbeitung einer Bestellung nahm über einen Zeitraum von mehreren Wochen immer mehr Zeit in Anspruch. Dies geschah, obwohl keine neue Version eingeführt wurde und keine andere Seite langsamer wurde. Dieses Verhalten war uns ein völliges Rätsel, bis wir in unserem JARep-Überwachungstool genauer nachschauten. Es stellte sich heraus, dass der Störenfried eine DAO war, die eine vorbereitete Anweisung ausführte, bei der nur ein Teil der Variablen Bind-Variablen waren. Mit Hilfe von JARep konnten wir zurückverfolgen, wo der Trend der steigenden Antwortzeit begann und wann die Probleme auftraten. Wir konnten auch sehen, dass dieses Problem nur auf einem der beiden Rechner auftrat. Mit diesem Wissen und seinem Logbuch konnte sich der Betreiber daran erinnern, dass er am Starttag mit einem neuen JDBC-Treiber experimentiert hatte, um ein Speicherleck zu beheben. Dies schien an der Leistung nichts zu ändern, was anfangs auch der Fall war. Die Probleme traten erst in den folgenden Wochen langsam auf. Sie hatten den neuen Treiber an Ort und Stelle gelassen, der sich später als Zeitbombe entpuppte. Als wir den alten Treiber wieder einsetzten, verschwand das Problem. Diese Erfahrung aus dem wirklichen Leben zeigt, wie nützlich die Überwachung und Trendanalyse von Anwendungsinterna ist.
Das nächste Mal werde ich über evidenzbasiertes Tuning bloggen. Verfasst von
Jeroen Borgers
Unsere Ideen
Weitere Blogs
Contact



