Bleib informiert und abonniere den Blog.

Workflows oder wie ich Last auf die DataEngine bringe

Im Zuge unseres Monitorings der DataEngine Instanzen haben wir ungewöhnlich hohe Festplatten- und CPU Aktivitäten festgestellt. Unserer Nachforschungen ergaben dann, dass ungünstig konfigurierte Workflows die Ursache waren.

Hier die Ausgangslage, die wir gesehen haben:

Das obere Diagramm zeigt eine CPU Auslastung von um die 40%, verbunden mit hohen Leseaktivitäten auf die Festplatten (mittleres und unteres Diagramm – grüne Linie).

Dieser Workflow war dafür verantwortlich:

Was wir hier sehen, ist ein Workflow, der nicht nur im Scheduler (also minütlich läuft), sondern auch beim Speichern. (1) Desweiteren haben wir keine Conditions gesetzt, so dass dieser Workflow minütlich auf alle Datensätze in Module angewendet wird. (2) Was hier nicht sichtbar ist, das die Action den Datensatz selber aktualisiert, was wiederum ein „On-Save“ Event und damit wieder diesen Workflow auslöst. (3)

So wurde eine rekursive Schleife gebaut, die erst aussteigt, wenn es ein Speicherfehler gibt. Das Ändern des gleichen Datensatzes, ohne eine entsprechende Condition und gleichzeitigem Aufruf des gleichen Workflow ist tödlich. Hier war die Instanz kaum benutzbar während der Ausführung.

Fazit:

Wenn man wiederholt die gleichen Datensätze über einen Workflow aktualisieren möchte, müssen entsprechende Conditions gesetzt werden, die verhindern, dass man hier rekursive Schleife aufbaut. Wenn mehrere Actions hintereinander (mit einer Veränderung des aufrufenden Datensatzes) ausgeführt werden, sollte die Bedingung für die Ausführung des Workflows gleich zu Beginn gesetzt werden. Dann wird ein erneuter Aufruf verhindert.

Profitiere von Expertentipps, News und Wissen per E-Mail