Warum gibt es "Aussetzer" /ist die Ausführung so langsam (u.A. Access2000), wie die Gründe aufspüren?

  • Access

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Thisoft.

    Warum gibt es "Aussetzer" /ist die Ausführung so langsam (u.A. Access2000), wie die Gründe aufspüren?

    Hallo,

    wir setzten auf einem window 2012R2 Terminal Server verschiedene Programme ein.
    Auf dem Server arbeiten maximal 50 Personen gleichzeitig, davon ca. 20 über eine vpn Verbindung, der Rest über das lokale Netz.
    Unter anderem wird eine selbstprogrammierte Access2000/2003 Lösung eingesetzt.

    Das Problem ist, das die Software zeitweise sehr träge reagiert und die Benutzer zeitweise mehrere Sekunden auf eine Reaktion warten müssen.
    Kurze Zeit später ist es dann wieder besser. Es kann aber auch mehrere Stunden hakkelig sein.

    Die Server sind relativ neu (1 Jahr). Wird die Auslastung über den Taskmanager verfolgt steigt die CPU Auslastung selten über 30%, die Arbeistspeicherauslastung selten über 15%.
    Messungen bezüglich der Festplattengeschwindigkeit waren auch OK.

    Gibt es eine Möglichkeit genauer herauszufinden warum bei einer bestimmten Aktion in der Software das System "hängt" und nicht reagiert?
    Quasi so etwas wie eine Echtzeitüberwachung.

    Wir wissen einfach nicht weiter und wären über jede Hilfe dankbar.

    Gruß
    Stepper

    Verschoben. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Moin,

    stepper71 schrieb:

    steigt die CPU Auslastung selten über 30%
    Es wäre möglich, dass das Programm kaum/kein Multithreading betreibt und damit tiefergehend nicht alle CPU-Kerne nutzt. Dann wäre ein Kern zu 100 % ausgelastet, während die anderen im "Schlafmodus" liegen. So könnte hier Leistung ungenutzt bleiben, die zu besagten Aussetzern führen kann.
    Versuche vielleicht mal, die Pro-Kern-Auslastung im TaskManager anzuzeigen.

    BTW: Ist das wirklich VB6?
    Mit freundlichen Grüßen,
    Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Hi,
    ich habe mit dem Resourcenmonitor die einzelnen Kerne überwacht. Die CPU Nutzung (der einzelnen Kerne) von der Access Anwendung ist in der Nähe von 0, auch in der Summe aller restlichen Programme erreichen die einzelnen Kerne selten 50%.

    Ist es eigentlich möglich von Ressourcenmonitor eine Logdatei zu speichern?

    VB6 passt nicht richtig (ist halt Access), aber in diesem Forum habe ich nur c# net und vb6 zur Auswahl.
    In das Datenbankforum passt es nach meiner Meinung auch nicht richtig.....

    Gruß
    Stepper
    Ist es eine Access Anwendung die komplett lokal läuft oder gibt es eine MS SQL DB dahinter?
    Wie groß ist die Anwendung? Wurde Sie bereits decompiled und wieder compiled? Werden Extra Verweise verwendet? Verwendet ihr Latebinding in VBA?

    Es ist möglich mit Windows über einen Zeitraum die Daten zu protokollieren. Das nennt sich perfmon oder Windows Performance Monitor.

    Deine Frage ist nahezu unmöglich zu beantworten. Tritt das Problem mit der Access Anwendung auch auf einem Einzelrechner gelegentlich auf?
    Das ist meine Signatur und sie wird wunderbar sein!

    stepper71 schrieb:

    VB6 passt nicht richtig (ist halt Access), aber in diesem Forum habe ich nur c# net und vb6 zur Auswahl.
    Dann gehört das ins VBA-Forum. Ich habe es dementsprechend verschoben.

    Ansonsten: Schau mal hier, vielleicht hilft dir das.
    stackoverflow.com/questions/16…n-unfreezes-once-finished
    Mit freundlichen Grüßen,
    Thunderbolt
    Hi,

    @Mono, mir ist klar das ich hier aus der Ferne keine Komplettlösung/Analyse bekomme.
    Zu deinen Fragen:
    Die Anwendung läuft komplett lokal auf dem Server, als Backend wird eine Access DB verwendet, also keine SQL DB.
    Die Anwendung ist ca. 30-50MB groß, wurde auch schon häufiger komprimiert.
    Extra Verweise Ja, Latebinding Nein.

    Mit dem Windows Performance Monitor habe ich die Sache schon überwacht, aber keinen richtigen Anhaltspunkt bekommen warum die Anwendung "hakelt".
    Ich glaube auch nicht das es etwas mit der Datenmenge oder der Art der Programmierung zu tun hat.
    Das hakeln tritt nicht konstant sondern sporadisch auf.

    Meine Hoffnung war/ist, dass es eine Möglichkeit (spezielles Tool??) gibt in Echtzeit die Ursache für eine bestimmte "Wartephase" zu ermitteln.
    D.h. wenn nach einem Klick auf eine Schaltfläche das Programm für 10sec hängt, möchte in ein Report/Logfile/wasauchimmer gucken und einen Hinweis darauf bekommen auf was konkret das System gewartet/dran gearbeitet hat (Daten wurden nicht von Festplatte geliefert, CPU ausgelastet, etc...).
    Mag sein das es solch ein Toll nicht gibt (geben kann...), dann wäre das aber auch schon mal eine Info.

    Gruß
    Horten
    Hallo,

    ich glaube nicht dass es ein fertiges Tool dafür gibt / geben kann. IMO bleibt Dir da nur der Weg in der Access-Anwendung selbst an den Stellen wo die Wartephasen vorkommen bzw. vermutlich vorkommen könnten eine eigene Zeitmessung einzubauen und in eine Log-Tabelle schreiben zu lassen. Ich habe mit dieser Methode schon zielführende Informationen und Denkanstöße zur Codeoptimierung erhalten... ;) Allerdings - erwarte keine Wunder, Db-Multiuserzugriff übers Netzwerk ist keine ganz einfache Geschichte.
    Verwendest Du evtl. auch ODBC in Deiner Anwendung oder geht alles nativ über Access?