Lange Durchführzeit eines FlowRuns

Guten Tag,
wir haben aktuell bei einem Flow die Meldung: LANGSAMER Aktuell: 33min 12s Durchschnitt: 15min 39s - 111.94% langsamer

Wie kann man die Flows „beschleunigen“ bzw. auf welche Kriterien ist dafür zu achten?

image

Hallo,

zunächst müsste man erst einmal Ursachenforschung betreiben, weshalb der Flow auf einmal länger lief. In dem Screenshot lässt sich erkennen, dass 1412 Calls durchgeführt wurden. Wenn beim vorherigen Run weniger waren, könnte das zum Beispiel eine Quelle sein.
Generell gilt, dass man möglichst nur Aufträge oder Artikel abruft, die sich seit dem letzten mal geändert hat. So vermeidet man zum Beispiel, dass man ständig alle vorhandenen Aufträge oder Artikel abruft.

Viele Grüße,
Lukas

Hallo,
danke für die Antwort.
Beim letzten Mal waren es ebenso viele Calls und die Dauer war ebenfalls gleich.

Wie kann man denn beim Flow einrichten, dass dieser nur die Artikel abruft bei denen sich etwas geändert hat? Gibt es dabei eine Funktion welche erkennt welche Artikel aus einem Stapel Artikel abgeändert werden müssen?

Hallo,

ob es möglich ist, hängt vom Step ab. Hat dieser unter anderem die Option, ein updated_at oder updated_from Feld, kann man hier über das Kettensymbol den Wert „prop_lastruntim“ setzt. Das ist dann nämlich das Ausführungsdatum des letzten Flowruns.
Hat ein Step nicht diese Funktion, kann man es noch über einen Datastorewriter lösen, der vorher die Artikel in einen Datastore schreibt und man dann in den nachfolgenden Steps den Output " updatedRecordsWithChangedContent" verwendet um so nur die Artikel mit geänderten Inhalt verarbeitet. So verringert man zwar nicht die Dauer des Abrufs, aber wenigstens die Dauer des Updates, falls es einen gibt.

Viele Grüße,
Lukkas

Hey Lukas,
vielen Dank für deine Antwort. Wir werden dies uns mal anschauen.
Gibt es zusätzlich noch die Möglichkeit den Ablauf der einzelnen Steps zu beschleunigen?

Du könntest bei Mappern noch den CasheMode aktivieren. Mehr dazu findest du hier.

Da nicht klar wird, was eigentlich gemacht wird (um welche Steps oder System es sich handelt) noch ein paar allgemeine Hinweise:

Die Ausführungszeit wird in der Regel maßgeblich durch das externe Systeme beeinflusst. Angenommen es handelt sich z.B. um ein Shopware auf einem eigenen Server, dann kann die API z.B. langsamer reagieren, wenn der Shop viele Besucher hat. D.h. es könnte nachts schneller sein als tagsüber usw. Auch wenn mehr Artikel oder Bestellungen im Shop sind kann es langsamer werden.

D.h. wenn z.B. durch Artikelimporte immer neue Artikel dazu kommen kann man davon ausgehen, dass mit jedem neuen Artikel irgendetwas schlimmer / langsamer wird.

Auch macht es z.B. einen Unterschied, ob man bei einem Artikelimport mit oder ohne Bilder importiert. Bildimport ist z.B. immer das langsamste was man machen kann, da die Shopsysteme hier viel machen müssen, um das Bild zu importieren (z.B. Bild per URL laden, Größe anpassen, Thumbnails erzeugen… je nachdem wie clever das Shopsystem ist).
Wenn man also heraufindet, dass die Bilder den Import verlangsamen, könnte man den Flow in 2 Flows auftrennen - einen für reine Artikeldaten und einen anderen für Bildimport den man z.B. nur einmal pro Woche macht (oder wenn neue Bilder dazu kommen).
Abrufe kann man beschleunigen, in dem man nur kleine „Zeitscheiben“ abruft oder wie von Lukas geschrieben wenn möglich nach Änderungsdatum filtert.

Auch kommt es darauf an, welche Optionen man im Step eingestellt hat. Es gibt z.B. manchmal Optionen, durch die zusätzliche API-Calls gemacht werden, um bestimmte Zusatzinformationen abzurufen. Das dauert dann länger.

Beim Thema Performance Optimierung gibt es leider nicht den einen Tip, da es oft ein Zusammenspiel verschiedener Teile ist. Am besten einfach mal ein paar Tage laufen lassen und im Eventlog die Dauer beobachten und schauen, ob es schwankt. Vielleicht geben diese Ausführung einige Anregungen oder Ideen.

Hey,
vielen Dank für die ausführlichen Antworten. Bei dem Flow handelt sich um um einen Prozess für die Bestandspflege. Dabei werden bei etwas mehr als 5.000 Artikeln alle Bestände überarbeitet. Diesbezüglich wird von einer URL eine CSV Datei gezogen aus dessen dann die aktuellen Bestände importiert werden.
Würde dabei der CashMode ebenfalls funktionieren obwohl manche Artikel in Varianten drin sind?

Könnten Sie mal grob einen Screenshot des Flows posten, damit man mal ein ungefähre Vorstellung hat, welche Steps so beteiligt sind? (gern sensitive Daten oder Namen schwärzen)
Der CacheMode im Mapper ist nur in bestimmten Situationen sinnvoll.

Hey,
hier die Übersicht der Steps:

Also hier scheint der eBay Step (also die eBay API) maßgeblich für die Ausführungszeit verantwortlich zu sein. URLDownload und CSVReader sollten keine Rolle spielen.
Der ebay-Step ist schon dahingehend optimiert, dass mehrere Datensätze gebündelt in einem API-Call (sog. „batch“) übermittelt werden.
Im Flow, so wie er ist, kann man leider nichts weiter optimieren.

Eine Möglichkeit der Optimierung wäre evtl. noch, dass man versucht irgendwie die zu übermittelnden Artikel zu reduzieren - z.B. durch einen Filter. Ob das sinnvoll ist müssten Sie mal überlegen. Wenn wirklich jeder Artikel der CSV übermittelt werden muss, dann kann man nichts weiter optimieren.

Ansonsten kann man versuchen irgendwie Zeilen zu filtern.
z.B. könnte man per Filter Step Artikel herausfiltern, die z.B. einen bestimmten Bestandswert über- oder unterschreiten.

Auch diese Artikel geben Ideen, wie man evtl. mit Deltas arbeiten kann:

Aber ob das sinnvoll ist, muss man immer selbst entscheiden.

Vielen Dank für die Hilfe. Dies hat uns viel weiter geholfen.