session.GetDatabase läuft 2,2 sekunden

  • Hallo Forum,


    nach langem Suchen und Agent-Profiling habe ich herausgefunden, dass eine einzige Funktion bei mir die Response-Time eines Web-Agenten verhagelt. Das ist ein getdatabase auf eine ca. 650MB große Datenbank.


    Komisch dabei ist, dass der Agent-Profiler nur 15ms angibt. Fakt ist jedoch, dass der Agent, sobald ich die Datenbank gette, ca 2,2 Sekunden länger braucht. Insgesamt benötigt der dadurch 2,3 Sekunden, statt 100ms. :wuet:


    Kann man den Get-Database Befehl irgendwier tunen oder umgehen? Gibt es sonst noch Tricks? Für meine Begriffe sind 650MB auch keine überdimensionierte Größe!


    Vielen Dank für jegliche Anregung!


    Gruss, Bernd

  • 2 Sekunden stellen eine zu lange Antwortzeit dar?


    Aber wie auch immer: die Hilfe sagt

    Zitat


    Creates a NotesDatabase object that represents the database located at the server and file name you specify, and opens the database, if possible.


    und das scheint der Knackpunkt zu sein. Die 15ms ist wohl die Zeit, die er braucht, um den Handle drauf z ukriegen. Die restlichen 2 Sekunden braucht er, um die DB zu öffnen. Wenn du also ein Updall auf die Deafult-View machst, bzw. auf die, die beim Öffnen im Browser herangezogen wird, dann sollte das auch fixer gehen.


    Dauert es denn auch so lang, wenn du einfach über

    Code
    Set notesDatabase = New NotesDatabase( server$, dbfile$ )


    gehst?

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Hallo und vielen Dank für die Antwort,


    ja, 2 Sekunden sind echt ärgerlich, wenn es sich auf eine einzige method beschränkt. Und es ist der letzte verbleibende Rest meiner Agent-Optimierung.


    Das mit NEW habe ich gerade getestet. Es dauer genau so lange. Ein Fixup bringt auch nichts.
    Ich habe das problem hier übrigens mit einem Testagent nachgebaut, der wirklich nichts anderes macht, als sich die Datenbank zu getten.


    Kann das was mit den Reader- und autoren-Feldern der enthaltenen Dokumenten zu tun haben? Oder kann man im Zugriff der DB was vergurken?

  • Wenn der Agent die Datenbank öffnet, dann werden alle Objekte zugewiesen. je nachdem wie aktuell die entsprechenden internen Views sind geht das schneller oder langsamer.


    Das einzige was du da noch optimieren kannst ist eben ein updall über die DB laufen zu lassen

  • So, nach langem Testen jetzt das Ergebnis.


    Die Methode getDatabase brauchte so lange, da die Ungelesenen-Markierungen in der Datenbank aktiv waren. Die hatte ich auf Notes-Seite eigentlich gebraucht - waren aber nicht so wichtig. Nachdem ich die disabled habe, benötigt die Methode statt 2 Sekunden nur noch 16ms; 125 Mal schneller! Wenn man bedenkt, dass diese 2 Sekunden in sehr vielen Backend-Agenten in meiner Anwendung benötigt werden, habe ich jetzt wirklich den Schalter "GoFaster=1" setzen können.


    Cool 8-)

  • Jau, ist sogar in einer IBM Technote dokumentiert:


    http://www-1.ibm.com/support/d…ss?rs=899&uid=swg21212520


    Je mehr Datenbanken dein Agent öffnet, desto schlimmer wird das Problem.


    Die Technote bezieht sich zwar eigentlich auf Notes 6/6.5, aber da es - wie üblich - heißt "Domino is working as designed", glaube ich nicht, dass sich in 7 etwas daran geändert hat.


    Da bin ich lustigerweise selbst gerade vor ein paar Tagen drüber gestolpert.

  • Tatsächlich...! Vermutlich hat damit auch die ominöse Fixup-Option -U zu tun. Man setze das neue Feature in das alte Format, damit einerseits die Unreaded marks und andererseits die Webagents laufen.


    Wenn man bedenkt, dass der Verzicht auf Reader- und Autoren-Felder bei mir ca. 50-100ms ausgemacht haben (und man liest ständig von den dadurch verursachten Performance-Einbußen), wird auf das Problem viel zu wenig hingewiesen.


    Naja, beruhigend zu wissen, dass ein "Feature" ist. :)

    • Offizieller Beitrag

    die Autorenfelder bringen nicht die Performanceeinbußen, es sind die Leserfelder. Deutlich bemerkbar wird es allerdings erst, wenn in der DB mehrere 10.000 Dokumente vorhanden sind.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

    • Offizieller Beitrag

    in manchen Fällen kann man die Ungelesen-Markierung allerdings nicht abschalten - siehe hier.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein