Performance Monitoring
Diese Funktion ermöglicht das Erheben von Laufzeiten in der Benutzeroberfläche und die Persistierung der Daten für eine weitere Auswertung. Die Darstellung der Performance-Messwerte und -Informationen erfolgt mithilfe eines BPC-Monitors.
Allgemeines
Für die Messung und Überwachung der Performance einer BPC-basierten Anwendung stehen standardisierte Performance-Messfunktionen zur Verfügung. Diese erfassen bei aktivierter Performance-Messung verschiedene auswertbare Parameter. Zusätzlich können diese Funktionen auch in eigen-entwickelten Funktionsmodulen über die Einbindung einer entsprechenden API eingesetzt werden.
De-/Aktivieren
Im Standard werden keine Performance-Daten erfasst.
Um diese Funktion zu aktivieren, muss in den Core Service Parametern die Einstellung performanceTracing
aktiviert werden.
Aufräumen
Die Performance-Daten werden in den Elasticsearch Index mit dem Alias bpc-performance
geschrieben.
Damit dieser nicht ins Unendliche wächst, werden periodisch alte Daten gelöscht.
Die Häufigkeit und Aufbewahrungsdauer kann in der Konfigurationsdatei [karaf]/etc/de.virtimo.bpc.core.cfg
angepasst werden (danach ist ein Core Bundle Neustart erforderlich).
Dies sind die Voreinstellungen:
# Alle 60 Minuten werden die Daten gelöscht welche älter als 4 Wochen sind de.virtimo.bpc.core.performance.cleanupPeriodInMinutes=60 de.virtimo.bpc.core.performance.deleteEntriesOlderThan=4 weeks ago
Darstellung der Performance-Informationen
Im Administrationsbereich können die Performance-Informationen eingesehen werden, siehe Performance Monitor.
Weiterhin ist es möglich, das AuditLog als Monitor-Modul anzulegen und in der Navigationsleiste verfügbar zu machen.
Schnittstelle (API)
Die API stellt Funktionen zur Markierung bestimmter Punkte auf der Zeitachse zur Verfügung. Zwei Punkte können anschließend für eine Messung (zeitliche Differenz zwischen den beiden Punkten) herangezogen werden. Die API kümmert sich dabei um das Sammeln der einzelnen Messungen und der Persistierung der Messungen.
Dadurch ergibt sich in der Regel folgendes Vorgehen:
-
Markierung Startzeitpunkt
-
Ausführung der Anwendung
-
Markierung Endzeitpunkt
-
Erstellung einer Messung anhand der beiden Markierungen
Wobei die API die Möglichkeit bietet, die letzten beiden Punkte in einem Aufruf zu bündeln.
Die API wird vom BPC Frontend unter BpcCommon.performance
angeboten.
Markieren eines Zeitpunktes
Beim Markieren eines Zeitpunktes ist immer eine ID anzugeben, die diesen Zeitpunkt identifiziert.
Der Aufruf sieht wie folgt aus:
BpcCommon.Performance.mark(ID); //Beispiel BpcCommon.Performance.mark("PSI_LOAD_BUSINESSPARTNER_FORM_START"); (...) BpcCommon.Performance.mark("PSI_LOAD_BUSINESSPARTNER_FORM_END");
Es ist zu beachten, dass eine vorhandene Markierung bei Verwendung der gleichen ID überschrieben wird.
Erstellen einer Messung
Für das Erstellen einer Messung werden zwei Markierungen angegeben.
Außerdem wird für die Messung ein eigener Bezeichner definiert.
Der Aufruf sieht wie folgt aus:
BpcCommon.Performance.measure(BEZEICHNER, START_MARKIERUNGS_ID, END_MARKIERUNGS_ID); //Beispiel BpcCommon.Performance.measure("PSI_LOAD_BUSINESSPARTNER_FORM","PSI_LOAD_BUSINESSPARTNER_FORM_START","PSI_LOAD_BUSINESSPARTNER_FORM_END");
Im Gegensatz zu Markierungen führt ein wiederholter Aufruf nicht dazu, dass bestehende Messungen verloren gehen.
Kombination aus Endmarkierung und Messung
Da in der Regel beim Markierung des Endzeitpunktes auch eine Messung erstellt wird, kann auch folgender kombinierte Aufruf verwendet werden:
BpcCommon.Performance.markAndMeasure(BEZEICHNER, START_MARKIERUNGS_ID, END_MARKIERUNGS_ID); //Beispiel BpcCommon.Performance.markAndMeasure("PSI_LOAD_BUSINESSPARTNER_FORM","PSI_LOAD_BUSINESSPARTNER_FORM_START","PSI_LOAD_BUSINESSPARTNER_FORM_END");
Bei diesem Aufruf wird automatisch die Markierung des Endzeitpunktes angelegt und die Messung erzeugt.
Persistierung
Das BPC kümmert sich selbstständig um die Persistierung der erfassten Daten. Um möglichst wenig Overhead zu erzeugen bzw. die eigentliche Anwendung nicht zu behindern, werden die Daten gepuffert und blockweise an das Backend geschickt. Dies bedeutet, dass Messungen nach dem letzten Absenden an das Backend beim Schließen des Browsers verloren gehen.
Das Backend stellt einen REST Service zur Verfügung, der die Informationen aufnimmt und in Elasticsearch ablegt. Folgende Informationen werden dabei je Messung erfasst:
-
BEZEICHNER der Messung
-
Startzeitpunkt
-
Dauer
-
USER_AGENT 1)
-
ID der Browsersitzung 2)
1) USER_AGENT HTTP-Header - enthält Informationen zu Browser und Betriebssystem.
2) Entspricht nicht der Session. Durch Öffnen eines neuen Browserfensters oder -tabs wird bei Wiederverwendung einer bestehenden Session eine weitere Browser-Sitzung erzeugt.