Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 5 von 5
  1. #1
    Zaungast
    Registriert seit
    26.02.2003
    Beiträge
    29

    Standard Firebird Suoerserver und ZEOS extrem langsam

    Hallo zusammen,

    ich habe gerade ein Problem mit der ZEOS-Lib 7.1.4-stable und Firebird 2.5. In einem Testaufbau habe ich nur ein Datamodule mit der ZCONNECTION-Komponente sowie ein Formular mit einem TDBGrid, einer ZQuery und einer TDataSource. Das SQL benötigt mit ZEOS rund 30 Sekunden, sobald ich die ZQuery öffne!

    Baue ich das selbe mit den UIB-Komponenten auf (UIBDatabase im Datenmodul, UIBDataset für das SQL) oder löse das Select in IBExpert oder anderen Tools für Firebird aus, geht das in < 1 Sekunde.
    Das Problem tritt nur auf, wenn der Firebird-Server auf einem anderen Rechner im Netz läuft, liegt alles auf Localhost ist kein Unterschied zwischen ZEOS und anderen Zugriffskomponenten feststellbar (ohne Messung, aber dann ist die Wartezeit mit < 1 Sekunde so kurz, dass sich keine Messung lohnt ob es nun 0,2 oder 0,7 Sekunden sind...).

    Das Select im Testaufbau ist ein simples select * from tabelle, die Tabelle hat knapp 1000 Datensätze, allerdings mit einigen VarChar-Feldern mit viel Text. Alle Komponenten sind nur mit den ötigsten Properties konfiguriert:
    ZConnection:
    Hostname: ip-Adresse des Servers
    Databasename: testdb (alias)
    protocol firebird-2.5
    sqlHourglass false

    ZQuery:
    alle Einstellungen Standard wie beim Einfügen im Formular, nur Database und SQL eingetragen

    Über ein NetzwerkMonitoring sehe ich, dass Zeos bei diesem Select mit einer Geschwindigkeit von 800-1200KB/s rund 30 Sekunden lang Daten überträgt. Ein testweise ausgelöster reiner Kopiervorgang vom Server auf den Client (Datei kopieren) läuft mit 12-15MByte/s. Das Netzwerk ist also OK und wenn Zeos hier ebenfals 10MByte statt < 1 MByte nutzen würde, müsste es in knapp 3 Sekunden fertig sein. Das wäre immer noch 3 mal so lange wie mit UIB oder in IB Expert.

    Ich habe schon etliche Einstellungen der ZConnection und der ZQuery versucht, aber völlig ohne eine Auswirkung auf die Geschwindigkeit.

    Ich habe keine Idee, wo ich nach der Ursache für diesen extrem langsamen Zugriff suchen soll.
    Das Testprogramm ist auch nur entstanden, weil das Problem in einer größeren Applikation auftritt, die bereits etliche Zugriffe über die ZEOS-Komponenten enthält und die ich nur ungerne auf einen komplett anderen Zugriff umbauen möchte (nur wenn es mit ZEOS gar nicht hinzubekommen ist...).
    Gerne liefere ich weitere Infos, wenn mit den obigen Daten keine ausreichende Basis für Tips/Lösungsvoschläge vorhanden ist.

    Viel Grüße,
    Siegbert

  2. #2
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.221

    Standard

    Handelt es sich um eine LAN oder um eine WAN Verbindung?
    Gibt es in der Tabelle BLOB oder CLOB Felder?
    Hast Du mal geprüft, ob es einen Schwellwert gibt? Datensatzmenge schrittweise einschränken/vergrößern, bis es zum Einbruch kommt?
    Hast Du mal nachgerechnet, wie Datendurchsatz mit rechnerischem Gesamtvolumen korreliert? Ist das bei überhaupt plausibel, gibt es eine Übereinstimmung zwischen schneller und langsamer Komponente?
    Gruß, defo

  3. #3
    Zaungast
    Registriert seit
    26.02.2003
    Beiträge
    29

    Standard

    -->Handelt es sich um eine LAN oder um eine WAN Verbindung?
    LAN

    --> Gibt es in der Tabelle BLOB oder CLOB Felder?
    Beides

    --> Hast Du mal geprüft, ob es einen Schwellwert gibt? Datensatzmenge schrittweise einschränken/vergrößern, bis es zum Einbruch kommt?
    ich habe mal mit 100 bzw 250 Sätzen getestet, gleiches Ergebnis mit < 1MBit Übertragungsrate bis Daten da waren

    --> Hast Du mal nachgerechnet, wie Datendurchsatz mit rechnerischem Gesamtvolumen korreliert? Ist das bei überhaupt plausibel, gibt es eine Übereinstimmung zwischen schneller und langsamer Komponente
    Das Datenvolumen ist ja immer das selbe. Ich habe noch nicht kalkuliert, ob das bei der langsamen Übertragung korreliert. Auffällig ist aber, dass hier die verfügbare Bandbreite bei weitem nicht ausgenutzt wird, dafür hatte ich extra mal die Dateiübertragung von 3 Dateien mit zusammen 40MB Inhalt gemacht, die mit 10-15MByte/s lief während ZEOS bei der Übertragung nur <1MByte/s überträgt. Ich prüfe nachher noch mal, wie groß das Datenvolumen ist, das die Komponente überträgt. Ich vermute auch, das ZEOS hier einen großen Overhead verursacht und zusätzlich die Bandbreite nicht ausnutzt. Bin nur im Moment nicht an dem Platz wo ich den Server verfügbar habe, wird wohl erst nach 20 Uhr möglich sein.

  4. #4
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.221

    Standard

    ok, ich nutze das nicht, aber bei Verwendung von BLOBs schau mal bitte hier
    http://zeoslib.sourceforge.net/viewforum.php?f=40
    bzw.
    http://zeoslib.sourceforge.net/viewt...=19130&p=35155
    nach den Cache Settings falls das zu Deiner Version passt.

    Ein direkter Vergleich von Dateikopie und Datentransfer zum DB Client ist glaub ich nicht sehr realistisch. Natürlich sollte es deutlich besser laufen als bei Dir, aber da gibt es beim DB Client doch viel mehr klein klein. Im WAN merkt man das noch deutlicher.
    Gruß, defo

  5. #5
    Zaungast
    Registriert seit
    26.02.2003
    Beiträge
    29

    Standard

    Ich habe die Komponente von 7.1.4-stable auf 7.2 BETA aktualisiert und das gent nun mit normaler Perfomance, ähnlich wie andere Tools auch.
    Zusätzlich habe ich das BLOB-Feld aus dem select für die Listendarstellung rausgenommen (da brauche ich es nicht) und zeige das nur in der Detailansicht, die ja nur einen Datensatz selektiert und daher performance-unkritisch ist.

    Etwas unsicher bin ich noch mit der Bezeichnung "BETA" von Zeos 7.2, aber dazu frage ich direkt im Zeos-Forum.
    Danke für die Tipps, hat mich weitergebracht!

 

 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •