Home › Forum › Allgemeines › Allgemeines zu Nuclos › Performance
- Dieses Thema hat 2 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 9 Jahre, 1 Monat von
Matthias Haake.
-
AutorBeiträge
-
20 Januar 2014 um 19:37 Uhr #7426
Matthias Haake
TeilnehmerHallo,
folgendes Szenario (Nuclos 3.15):
In einer Entität A wird gesucht. Das Suchergebnis soll anderen Mitarbeitern zur Verfügung gestellt werden. Die Ergebnismenge wird dann gemeinsam „abgearbeitet“.Umsetzung:
In der Suchergebnisliste werden alle Treffer markiert und mittels Arbeitsschritt werden neue Datensätze in der Zielentität B erzeugt. Die Mitarbeiter arbeiten dann in der Entität B.Der geschilderte Workflow ist in Ordnung und akzeptiert – zumal die Verwendung einer separaten und leichtgewichtigen „Abarbeitungs“-Entität einige Vorteile bietet.
Problem:
Die Ergebnismenge enthält pro Suche durchschnittlich 1200 Datensätze. Die Durchführung des Arbeitsschritts (um die Ergebnisse von A nach B zu übertragen) dauert teilweise sehr lange.Die Business-Regeln wurden in mehreren Schritten bereits optimiert (durch Einsatz von Report-Datenquellen und dem DatasourceProvider). Die Abarbeitung der reinen Logik braucht laut LOGFILE im Schnitt zwischen 15-50 ms pro Datensatz. Die restliche Zeit von ca. 150 ms wird durch das Nuclos-Framework verwendet. Pro Datensatz kommen also gute 200 ms zusammen. Diese Zeiten sind in Anbetracht der Baukastenvorteile völlig ok und stellen für unseren Anwendungsfall kein Problem dar.
ABER: Das LOGFILE zeigt, dass zwischen den einzelnen Arbeitsschritten „Pausen“ liegen. Diese Zeit braucht Nuclos, um den nächsten Datensatz aus der Entität A für den nächsten Arbeitsschritt zu laden.
Meine Analyse ergab, dass die Ursache in der Verwendung von Bildern liegt. Die Größe der Bilder beträgt durchschnittlich 50kB pro Datensatz.
Abarbeitung von 100 Datensätzen:
-ohne Bilder: 20 sek
-mit Bildern: 65 sekEs ist im Alltag schon ein Unterschied, ob Nuclos 4 min oder 13 min blockiert ist.
Meine Frage: Gibt es Vorschläge, was ich optimieren könnte?
Ich dachte schon daran, vielleicht eine virtuelle Entität für die Suche zu definieren und dort die Bilder wegzulassen. Leider funktioniert das nicht, da ich die zahlreichen Subforms dann nicht einbinden kann (die besitzen ja keine Referenz zur virtuellen Entität, werden für die Suche aber benötigt). Oder müsste man für die Entitäten in den Subforms dann event. auch virtuelle Entitäten definieren? Außerdem habe ich grade festgestellt, dass man für virtuelle Entitäten keinen Arbeitsschritt definieren kann… 🙁
Kann man Bilder vielleicht in einer anderen 1:1-Entität speichern, so dass sie standardmäßig nicht mitgeladen werden, sondern nur irgendwie im Layout eingebunden werden?
Kann man im Arbeitsschritt vielleicht nur die Properties des Quellobjektes laden, die man bei „zu übernehmende Attribute“ angibt – oder man definiert eine „Ausschlussliste“ (folgende Attribute nicht laden). Für den Arbeitsschritt brauche ich eigentlich nur die ID von A und nicht das gesamte Objekt…
Alternativen?
Vielen Dank im voraus für jeden Tipp und viele Grüße,
MatthiasNachtrag: Testweise habe ich die Bilddaten verkleinert und von 50kB auf 3kB pro Datensatz reduziert. Überraschenderweise brachte das keine Verbesserung in der Abarbeitungszeit – immer noch über 60 sek für 100 Datensätze. Nach dem Entfernen der Fotos laufen dieselben Datensätze innerhalb von 20 sek durch.
19 Februar 2014 um 03:18 Uhr #7497Ramin Goettlich
TeilnehmerUns fällt dazu auf Anhieb auch nichts ein. Am besten mal ein Ticket erstellen, damit man das gezielt optimieren kann (Bilder im Kontext von Objektgeneratoren)…
20 Februar 2014 um 15:33 Uhr #7506Matthias Haake
TeilnehmerVielen Dank für die Rückmeldung.
Bei Gelegenheit analysiere ich das ganze mal genauer. Vielleicht liegt es ja an der Konfiguration der Entität selbst und ist gar nicht auf Nuclos zurückzuführen. Sollte das nichts ergeben, mache ich ein Ticket und stelle alle Infos der Analyse dort mit ein.
-
AutorBeiträge