Please enable JavaScript to view this site.

Administrationshandbuch

Navigation: Tech Doc > Performanceoptimierungen > Performanceanalyse

Zeiterfassung

Scroll Zurück Oben Weiter Mehr

 

Diese Funktion steht Ihnen ab 2025.1 zur Verfügung.

Hintergrund

Um nachvollziehen zu können, ob Performanceprobleme durch eine Änderung an einem Prozess, ein JobRouter Update oder beispielsweise ein Betriebssystem- oder Infrastrukturupdate verursacht wurden, ist es zwingend notwendig die Ausführungszeiten vor und nach dem Update zu erfassen, um diese vergleichen zu können. Dafür kann die Dauer bestimmter Aktionen in JobRouter in die Datenbank geloggt werden.

Beschreibung

 

JobRouter verwendet die Symfony Stopwatch Komponente, um die Ausführungszeit bestimmer Aktionen aufzuzeichnen. Diese Aktionen umfassen aktuell:

 

Eingangs- und Prozessboxen: Öffnen, Blättern & Filtern

Archivansichten: Öffnen, Blättern & Filtern

Benutzerschritte öffnen (initiales Laden eines Dialoges ohne Sub-Requests)

Benutzerschritte senden

Login/Logout

 

Logging

 

Das Logging kann über die config.php (Eintrag duration) aktiviert werden und ist ohne das reguläre Debug-Log (CONST_DEBUG oder CONST_LOG_LEVEL_FILE) oder das Stopwatch-Log (stopwatch) möglich.

 

<?php

 

// ...

 

return [

  'db' => [

    // ...

  ],

  'log' => [

        'stopwatch' => false,

        'duration' => [

            'archiveView' => [1, 2, 3],

            'authentication' => ['login', 'logout'],

            'step' => [

                'open' => [

                    ['MyTestProcess', [1, 4]],

                    ['MyOtherTestProcess'],

                ],

                'send' => [

                    ['MyTestProcess', [1, 4]],

                    ['MyOtherTestProcess'],

                ],

            ],

            'box' => [

                'standard' => ['inbox', 'completed', 'substitution'],

                'custom' => [

                    ['MyTestProcess'],

                    ['MyOtherTestProcess', [2]],

                ],

            ],

        ],

    ],

];

 

 

Objekttyp

Objektsubtyp

Identifier

Beispiele

Beschreibung

archiveView

-

ID(s) der Archivansicht(en)

'archiveView' => [1, 2, 3]

Loggt das Öffnen, Blättern & Filtern von Archivansichten mit den IDs 1, 2 und 3

authentication

-

Liste der Aktionen (login, logout)

'authentication' => ['login', 'logout']

Loggt die Aktionen Login und Logout

step

open

Liste von Prozessnamen (verpflichtend) und Schrittnummern (optional)

'step' => [

 'open' => [

         ['MyTestProcess', [1, 4]],

         ['MyOtherTestProcess'],

 ],

],

Loggt das Öffnen von Benutzerschritten der Prozesse MyTestProcess (nur Schritte 1 und 4) und MyOtherTestProcess (alle Benutzerschritte)

step

send

Liste von Prozessnamen (verpflichtend) und Schrittnummern (optional)

'step' => [

 'send' => [

         ['MyTestProcess', [1, 4]],

         ['MyOtherTestProcess'],

 ],

],

Loggt das Senden von Benutzerschritten der Prozesse MyTestProcess (nur Schritte 1 und 4) und MyOtherTestProcess (alle Benutzerschritte)

box

standard

Liste der Standardeingangsboxen (inbox, substitution oder completed)

'box' => [

 'standard' => ['inbox', 'completed', 'substitution'],

]

Loggt das Öffnen, Blättern & Filtern der Eingangsbox (inbox), Bearbeitet-Box (completed) und Vertretungsbox (substitution).

box

custom

Liste von Prozessnamen (verpflichtend) und IDs der Eingangsboxen (optional)

'box' => [

 'custom' => [

         ['MyTestProcess'],

         ['MyOtherTestProcess', [2]],

 ],

],

Loggt das Öffnen, Blättern & Filtern von Prozesseingangsboxen der Prozesse MyTestProcess (alle Boxen) und MyOtherTestProcess (Box 2)

 

Ist das Logging aktiv, wird die Dauer der angegebenen Aktionen in die Datenbanktabelle JRDURATIONLOG geschrieben.

 

Bitte beachten Sie: die Logausgaben sind zahlreich. Um die Datenbank zu schonen, sollte dieses Logging sinnvoll und nur für die Komponenten aktiviert werden, die potentiell Performanceprobleme haben können, z.B. große und komplexe Dialoge oder Eingangsboxen mit sehr vielen Schritten. Wir raten dringend davon ab, standardmäßig jede mögliche Komponente in JobRouter auf Dauer loggen zu lassen. Es ist zudem ratsam die Tabelle regelmäßig zu sichten und alte Einträge (z.B. aus der vorletzten Prozess- oder JobRouter-Version) zu entfernen. JobRouter bietet dafür aktuell keinen Automatismus.

Empfehlung: In der Praxis könnten Sie die Aufzeichnung der Ausführungsdauer verschiedener Bereiche eine Woche vor einem Update starten und mit den neuen Daten nach dem Update abgleichen. Somit wird nachweisbar ersichtlich wie sich die Zeiten durch das Update verbessern oder verschlechtern. (Sofern außer dem Update keine weiteren Parameter verändert wurden am System)

Struktur der Datenbanktabelle:

Die Tabelle JRDURATIONLOG hat die folgende Struktur:

id

identifier1

identifier2

identifier3

identifier4

object_type

action

duration

context

app_version

create_date

1

inbox




standardBox

open

0.18

{"username":"admin"}

20250100

2025-03-12 14:19:16

2

inbox




standardBox

open

0.12

{"username":"admin"}

20250100

2025-03-12 14:19:22

3

admin




logout

logout

0.14

{"target":"login-page"}

20250100

2025-03-12 14:26:14

4

admin




login

login

0.57

[]

20250100

2025-03-12 14:26:19

5

MyTestProcess

1

1

Startdialog

step

open

0.26

{"username":"admin"}

20250100

2025-03-12 14:26:32

6

MyTestProcess

1

1

Startdialog

step

send

0.23

{"username":"admin"}

20250100

2025-03-12 14:26:34

7

1




archiveView

open

0.15

{"username":"admin"}

20250100

2025-03-12 14:26:50

8

MyTestProcess

1

1


processBox

open

0.15

{"username":"admin","actions":{"acti...}}

20250100

2025-03-12 14:26:51

Spalte

Beschreibung

Beispielwert

id

Eindeutige Identifikationsnummer der Zeile.

1

identifier1-4

Die Identifier mit denen das zum Eintrag zugehörige Objekt eindeutig identifiziert werden kann. Dieser ist abhängig vom Objekttyp:

 

standardBox: interner Name der Box, z .B. inbox (1)

processBox: Prozessname (1), Prozessversion (2), ID der Eingangsbox (3)

archiveView: ID der Archivansicht (1)

step: Prozessname (1), Prozessversion (2), Schrittnummer (3), Dialogname (4)

login: Benutzername (1)

logout: Benutzername (1)

identifier1: MyTestProcess

identifier2: 1

identifier3: 1

identifier4: Startdialog

object_type

Der Typ des Objektes, das geloggt wurde:

 

standardBox

processBox

archiveView

step

login

logout

step

action

Die Aktion, die ausgeführt wurden. Möglich sind:

 

open

send

login

logout

open

duration

Die Dauer der Aktion in Sekunden

0.23

context

Kontext zur geloggten Aktion

{"username":"admin"}

app_version

Die JobRouter-Version zu der Zeit, als der Eintrag geloggt wurden. 20250100 = 2025.1.0

20250100

create_date

Das Datum, an dem der Eintrag erstellt wurde

2025-03-12 14:26:51