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 OpenSearch 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:

de.virtimo.bpc.core.cfg
# 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.

Performance Monitor Ansicht

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:

  1. Markierung Startzeitpunkt

  2. Ausführung der Anwendung

  3. Markierung Endzeitpunkt

  4. 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 OpenSearch 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.


Keywords: