Announcement

Collapse
No announcement yet.

Firebird Suoerserver und ZEOS extrem langsam

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    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

    Comment


    • #3
      -->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.

      Comment


      • #4
        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

        Comment


        • #5
          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!

          Comment

          Working...
          X