Irgendwas bremst die Applikation wahnsinnig

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
rschi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 38
Registriert: Mo, 25. Sep 2006 13:41

Irgendwas bremst die Applikation wahnsinnig

Beitrag von rschi »

Hallo zusammen

Mit unserer Applikation, welche mit XBase 1.9 kompiliert ist, haben wir seit einiger Zeit einige Probleme bei einem Kunden. Die App läuft mit dem ADS 7.1 zusammen
Das äussert sich folgendermassen: Der Fensteraufbau ist vor allem wahnsinnig langsam. Nach einem Neustart der Applikation ist es wieder ok.
- Bei einem User ist das Programm nach dem Mittag langsam.
- Bei einem zweiten ist die App langsam, wenn sie einige Zeit nicht benutzt wird.
- Bei weiteren Benutzern wird die App langsam während damit gearbeitet wird. Dort muss am Tag mehrere Male neu gestartet werden.

Hat mir jemand einen Tipp, was wir dort noch prüfen und unternehmen könnten?

Folgende Ansätze haben wir schon angeschaut, diese konnten aber weitestgehend ausgeschlossen werden.
- Ursprünglich hatten wir einmal eine Funktion der Windows-API in der App, um ein Fenster nach dem Titel zu suchen, diese haben wir nun raus genommen.
- Zudem vermuteten wir den Drucker, resp. PDF-Writer. Denn die User, welche zuerst reklamiert haben, drucken viel auf PDF. Den PDF-Writer haben wir bei diesem Kunden nun ersetzt, aber das Problem besteht weiterhin.

Falls jemand noch mehr Infos braucht, bitte melden. Ich könnte wahrscheinlich seitenweise schreiben, aber es wäre dann bestimmt das meiste irrelevant.
Vielen Dank für jeden Tipp und Hinweis.

Gruss
Robin
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hallo Robin,

hierbei kann es viele Möglichkeiten geben.

- Läuft das ganze im Netz ? Wenn ja: Karten, Kabel, Treibereinstellung usw.

- Antivir . Läuft das Antivirprogramm ständig im Hintergrund ?? prüft es evtl. jeden netzzugriff ??

- Läuft ein anderes Programm im Hintergrund ? Was sagt der Taskplaner ?

- sleep - also wenn ich große Datenmengen durchlaufe - mach ich vor dem enddo / next ein Sleep(001). Wirkt Wunder

- Alle entsprechenden Servicepacks der Betriebssysteme installiert ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

hast du die Prof. Sub. ? Wenn ja, dort gibt es ein Programm (memwatch.ZIP) das man einlinken kann um den Speicherverbrauch zu ermitteln und eines (xppprof.ZIP) um das Programm nach den entscheidenten Stelle zu durchsuchen.

Nicht destroy()te Drucker-, Schriftobjecte oder ähnliches können natürlich die Speicherauslastung des Systemes erheblich belasten. Bei meinem Rechner (Win2000 mit neuem F-Prot) werden die Instanzen von Firefox nicht mehr sauber geschlossen, eventuell habt Ihr so ein Problem mit aufgerufenen Objekten, DLLs etc.

Notfalls kann man den Taskmanager nutzen um grob den Speicherverbrauch zu beurteilen. Wenn alles geladen ist, sollte der verbrauchte Speicher kaum noch zu nehmen bei normaler Arbeit.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14657
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hubert,

ich hab nur die Foundation Subscription, die beiden Programme sind trotzdem dabei.

Jan
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Robin,

besorge dir wireshark(freeware), damit Du Netzwerkprobleme ausschließen
kannst.

Gruß
Alfred
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Robin,

noch ein Tip: Soviel ich beobachtet habe, tritt dieses Verhalten meistens auf bei:

1. Benutzern die sehr schnell und viel eingeben
2. die Rechner haben sehr wenig Speicher
3. und die Rechner haben die Grafik on Board

Xbase++ scheint sich dann zu verschlucken und des öfteren Speicher nicht mehr ferizugeben.
Wie Du erkannt hast ist die Anwendung bei Neustart dann wieder entsprechend schnell.

Bei Nutzern bei denen zwar Punkt 2 und 3 zutreffen, Punkt 1 aber nahezu ausgeschlossen werden kann ;-) tritt dies Problem nicht auf.

Wenn es die Anwendung zulässt, würde ich folgendes versuchen:

1. Sleep(0) nachdem eine Bildschrimeingabe (nicht Feld) abgeschlossen und ein Destroy der verwendeten Objekte durchgeführt wurde.

Ein Sleep bei den Datenbankoperationen macht in diesem Fall wenig Sinn.
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Beitrag von Lewi »

Hallo Robin,
zur Problemanalyse würde ich erst einmal die Datenbank-Operationen kapseln um zu sehen, ob das Problem mit den Datenbanken bzw. mit dem Datenbankserver in Zusammenhang steht.

In diesem Zusammenhang würde ich folgenden Fragestellungen nachgehen:

- Taucht das Problem schon bei Initiinalisierung/Anbindung mit dem Datenbankserver auf?
- Wurden die richtigen Datenbanktreiber eingebunden (dbeSys)
- In Zusammenhang mit Db-Server-Client: ist ein aktueller Treiber aufgespielt oder wurde seit dem Auftreten der Probleme der Client geändert?
- Wie verhalten sich die Datenbanken, wenn auf einer Arbeitsstation mit einem Adminstratoren-Tool auf den DB-Server zugeriffen wird?
- Tritt das Problem in Zusammenhang mit jeder Datenbank auf?
- Wie steht es mit der CPU-Auslastung?
- Welche Speicher-Ressourcen werden in Anspruch bei welchen Aktionen in Anspruch genommen?
- Gibt evtl. der Debugger Auskunft darüber, was die Systemlast verursacht?
- Wurde schon ein kleines Test-Programm geschrieben das auf Daten des DB-Servers zugreift und browst?


Methotik führt in meisten Fällen zur Ursache.

Viele Grüße
Olaf
rschi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 38
Registriert: Mo, 25. Sep 2006 13:41

Beitrag von rschi »

Vielen Dank - Rolf, Hubert, Jan, Alfred, Klaus und Olaf - für die zahlreichen Antworten und Vorschläge.

Ich werde jetzt einmal einiges testen. Sobald ich ein Resultat habe, werde ich mich dann wieder melden...

Dankbarer Gruss
Robin

PS: Zusätzliche Tipps sind natürlich weiterhin herzlich willkommen :)
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

ich kann es gar nicht oft genug wiederholen, wenn ich Probleme mit einem Programm habe, nutze ich die kompfortable Berichterstattung mit der Alternate Datei:

Code: Alles auswählen

set console off // besonders wichtig bei GUI Programmen
set alternate to MyTestFile.TXT
set alternate on
...
... an allen interessanten Stellen ...
? date(),time(),seconds(), ProcName(), ProcLine(), ThreadID(), "myName", Variablen etc.
...
...
Dann bediene ich das Programm bzw. stresse es.
Man sieht sehr schnell wo keine Zeit verbraucht wird und kann problematische Stellen einkreisen.
Angezeigten Variablen zeigen ob man erwartete Inhalte vorfindet.
Nützlich ist hier auch die neue Funktion Var2Char() ...

Oft belächelt ist diese Methode aber dem aktuellen Debugger überlegen, da man keine Probleme mit den Focuswechseln hat und die Listen ausdrucken und gut untersuchen kann. Mit dem Debugger geht das eher nur für kurze Code Abschnitte bis man die Übersicht verliert.

In deinem Fall müsste man dann vergleichen in welchen Programmteilen die Verzögerungen auftreten. Mit Memory(...) kann man dann den aktuellen Speicher abfragen auch wenn diese Angabe mit Vorsicht zu bewerten ist (siehe Hilfetext).
Gruß
Hubert
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Robin,

DNS-Server und Gateway richtig konfiguriert?

DHCP im Einsatz? Bei mir war z.B. ein Router dazu verwendet worden, der
auf einmal nicht mehr richtig funktionierte. Zum Test eine feste IP-Adresse
verwenden.

Auf unsinnige Energiesparfunktionen(z.B. Netzwerkkarte) prüfen.

Gruß
Alfred
rschi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 38
Registriert: Mo, 25. Sep 2006 13:41

Beitrag von rschi »

Besten Dank für die Antworten!
Alfred hat geschrieben: Auf unsinnige Energiesparfunktionen(z.B. Netzwerkkarte) prüfen.
Die Option "Computer kann Gerät ausschalten, um Energie zu sparen" wäre evtl. noch eine plausible Erklärung.
In unserer App. prüfen wir jedoch regelmässig, ob wir das Netzlaufwerk noch erreichen. Wenn dem nicht mehr so ist, gibt es eine Meldung. Wenn das BS die Netzwerkkarte nun ausschaltet, um Energie zu sparen, wäre die Verbindung ja ganz weg, oder?
Gibt es auch eine Option, welche die Geschwindigkeit der Karte extrem drosselt?
Was gibt es denn sonst noch für "unsinnige" Energiesparfunktionen?

Momentan versuche ich das Ganze via Remotedesktop zu reproduzieren. Bisher leider ohne Erfolg. Das ominöse Verhalten tritt bis jetzt (über die Remote-Verbindung) nicht auf.
Deshalb könnte ich mir schon vorstellen, dass es was mit dieser Energiesparfunktion zu tun hat und die Remote-Verbindung selber einfach verhindert, dass die Karte abgestellt wird.

Zuerst würde ich gerne das Verhalten reproduzieren können, um danach der Reihe nach verschiedene Ansätze zu probieren, damit ich am Schluss auch weiss, an was es wirklich gelegen hat.

Gruss
Robin
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

"Computer kann Gerät ausschalten" führt dazu, daß eine aktive Netzwerkverbindung einfach stirbt. Je nach Chipsatz und Betriebssystem gelingt es bei einem dann folgenden Request einfach nicht, die Verbindung wieder aufzubauen. Die Applikation tritt dann auf Laufzeitfehler wie "ungültiges Handle", "nichtselektierter Arbeitsbereich" undsoweiter. Einen Performanceeffekt sollte es allerdings nicht geben. Wenn der Fensteraufbau sehr langsam ist, hat das häufig seine Ursache darin, daß der Arbeitsspeicher schlicht ausgelastet ist (swappen) oder daß massenweise Objekte noch aktiv und nur nicht mehr sichtbar sind. Darauf weist auch hin, daß es bei einem Neustart wieder schnell ist. Löschst und nilst Du wirklich alles, was nicht mehr benötigt wird?
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

eine benutzte Komponente wird (sollte eigentlich) nie abgeschaltet werden. Solange deine Anwendung in der Minute auch nur einen Zugriff auf eine Netzwerkresource macht, kann die nicht abgehängt werden.

Dennoch habe ich dies auch abgestellt, da ich sonst nach dem Ende des StandBy Modus keine Netzverbindung mehr erhalten habe.
Wenn man einige Zeit (Standard meine ich 2 Stunden) keine Netzwerkzugriffe auf ein bestimmtes Laufwerk durchgeführt hat, trennt der Server die Verbindung. Beim nächsten Zugriff wird diese sofort ohne erkannbare Verzögerung wieder hergestellt, falls der Server genug freie Resourcen zur Verfügung hat. Wenn nicht hängt das Programm(teil) Minuten bis zum Timeout und Meldungen wie (Clipper: kann overlaydatei nicht lesen oder Netzlaufwerk / Datei nicht verfügbar / vorhanden ...)
Ich hatte vergessen meiner SAT-TV Karte die IP Zuordnung wegzunehmen und ab und an hing der ganze Rechner ...

Dass aber nur eine Anwendung mit der Zeit langsamer wird und nach Beenden DIESER Anwendung diese nach einem neuen Programmstart wieder normal läuft deutet für mich auf eine interne Funktion hin, die immer mehr Speicher belegt oder z.B. immer größere temporäre Dateien durchsuchen muss.
Gruß
Hubert
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Robin,

Energiesparen siehe Systemsteuerung/Energieoptionen.

XP verliert gerne seinen virtuellen Arbeitsspeicher. Prüf mal ob der
noch da ist und auch genügend Platz auf der Festplatte ist.

Meiner war gerade eben auf 0 gestanden. :(

Hast du den Client mal mit Norton Utilities geprüft? Defrag?

Zur Fehlersuche würde ich mir ein Referenzsystem auf Wechelplatte
ziehen. Dann kannst Du wenigsten ausschließen, dass dein Programm
der schuldige ist. Es könnte ja auch eine andere Anwendung den Rechner
dicht machen.

Sollte es sich um einen Windows 2003 Server handeln, dann gibt es noch
einige Dinge die dir das Leben schwer machen können. Deshalb solltest
Du zuerst auf dem Server in die Computerverwaltung unter System
Ereignisanzeige gehen und prüfen ob alles in Ordnung ist.

Gruß
Alfred
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo,
habe auch grosse Probleme mit der Geschwindigkeit in vielerlei hinsicht. Leider habe ich bis jetzt auch noch nichts gefunden was auf einen Ursache hinweist. Für die bessere Speicherverwaltung kann ich FreeRAM XP pro empfehlen, ist Freeware und putzt in regelmäßigen Abständen den Speicher frei.
Grüsse
Rudolf
Juergen
UDF-Programmierer
UDF-Programmierer
Beiträge: 92
Registriert: Di, 19. Dez 2006 19:37
Wohnort: Düsseldorf
Kontaktdaten:

Applikation wird langsamer

Beitrag von Juergen »

Es gibt eine einfache Lösung.

Eine der Stärken von Alaska Xbase++ ist das Multithreading:

Eine Applikation besteht in der Regel aus mehreren Modulen:
z. B. Kundenverwaltung, Artikelverwaltung usw.

Also lasse ich jedes dieser Module in einem eigenen Prozess laufen.

{|o|o:=Thread():New(),o:Start({||programm1(parameter)})}

kein destroy, kein NIL usw. mehr nötig.

Der Speicher wird nach Ende des Prozesses freigegeben.

Diese Vorgehensweise erlaubt mir außerdem das Benutzen von
PRIVAT-Variablen.

Gruß
Jürgen
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hall Jürgen,
mach ich von Anfang an schon so, funktioniert super. Aber das Geschwindigkeitsproblem löst es nicht.
lg
Rudolf
Juergen
UDF-Programmierer
UDF-Programmierer
Beiträge: 92
Registriert: Di, 19. Dez 2006 19:37
Wohnort: Düsseldorf
Kontaktdaten:

Applikation wird langsamer

Beitrag von Juergen »

Hallo,

würde gerne wissen, ob das am ADS liegt.

Arbeite mit XBase 1.82 und Express++ . Ich benutze noch
DBFNTX . Ich hatte auch nach intensiven Prüfungen des
Speichers in dieser Konstellation keine Probleme feststellen
können.

Ich starte allerdings meine EXE immer vom lokalen Rechner.

Hatte da in der Vergangenheit so manche Probleme mit langsamen
Netzwerken.

Gruß
Jürgen
dirk
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 29
Registriert: Mi, 05. Jul 2006 15:17
Wohnort: 26689 Augustfehn

Beitrag von dirk »

Eine einfache Methode, um festzustellen, ob Objekte nicht wieder aus dem Speicher freigegeben werden, hat man mit dem Windows-eigenen Taskmanager:
Im Prozessfenster blendet man sich sich Spalte GDI-Objekte ein (über Menü Ansicht/Spalten auswählen.../GDI-Objekte).
Man startet die Anwendung und arbeitet darin, indem man z.B. ein Fenster öffnet und wieder schließt. Die Anzahl der GDI-Objekte sollte dann wieder auf die Anzahl vor dem Öffnen zurückfallen, ansonsten hat man vergessen einige Objekte zu zerstören (so von Andreas auf der DEVCON vorgeführt). Und dadurch wächst dann der Speicher so zu und das System wird langsam.

Wenn das Programm beendet und damit der Speicher wieder freigegeben wird, ist das Programm nach de Neustart auch wieder schnell.
Vielleicht hilft es ja weiter.
dirk
Krause
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Mo, 08. Jan 2007 8:55
Wohnort: In Thüringen

Beitrag von Krause »

Hi Robin,

ist nur deine Applikation betroffen oder werden die Maschine auch im normalen Betrieb immer langsamer?

Wir hatten ein ähnliches Problem, dann waren aber auch meist andere Applikationen mit davon betroffen. Ist dies der Fall, sollte das gesamte Netzwerk komplett durch eine Fachfirma gecheckt werden. Bei uns war es z. Bsp. in einem Fall ein fehlerhafter Hauptswitch (ohne Totalausfall!). Werden alle wichtigen relevanten Netzwerkkomponenten nach erreichen ihrer Lebensdauer ausgesondert und durch Neue ersetzt ...

MfG
Joachim
Antworten