Home Forum Allgemeines Allgemeines zu Nuclos Performance

Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
  • Autor
    Beiträge
  • #7426
    Matthias Haake
    Teilnehmer

    Hallo,

    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 sek

    Es 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,
    Matthias

    Nachtrag: 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.

    #7497
    Ramin Goettlich
    Teilnehmer

    Uns 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)…

    #7506
    Matthias Haake
    Teilnehmer

    Vielen 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.

Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)