Wir haben im Prinzip das gleiche Problem, wie es hier bisher beschrieben wurde. Deshalb habe ich den Thread mal wieder nach oben geholt, in der Hoffnung es hat hierzu jemand vielleicht neue Erkenntnisse gewonnen.
Wir haben zwei fast baugleiche Maschinen, E8400 Core2Duo.
DB ist Firebird SuperServer 1.56, eine mit XP, die andere mit Server 2008R2 x64. Die Datenbank ist ca. 500 MByte gross, gecached werden 10000 Pages a 8192 Byte, also fast 1/5 der gesamten
DB.
Alle Queries sind prepared und werden innerhalb der Schleifen-Abfragen mit Parametern versorgt.
DB-Zugriff über IBObjects.
Lassen wir den einen Programmpunkt zum Zusammensuchen von Daten lokal, egal auf welcher Maschine laufen dauert das ca. 1 Sekunde. Geht der Zugriff über Netzwerk, dann dauert es ca. 17 Sekunden (100 MBit, 2% Netzwerklast). Umstellung auf GBit ca. 9 Sekunden bei 0,58% Netzwerklast. Grosse Dateien zwischen den Rechnern hin- und herkopieren - ca. 40 MByte / Sekunde bei 80% Netzlast
Was ich bisher schon alles probiert habe:
- Diverse Parameter in der firebird.conf (Cache / PageSize / Affinity etc.)
- Datenbank auf dem Server auf eine
RAM-Disk packen, kein Unterschied!
- Umstellung der gesamten
DB mit Backup/Restore auf Firebird 2.5 RC2 SuperClassic x64, genauso langsam
- Switch rausnehmen und beide Rechner per Crosslink direkt verbunden
- Langsameren Server (Notebook mit Pentium M760), dauert es ca. 20 Sekunden
- Beide Karten hart auf 1GB Fullduplex umgestellt
- google bis zum Abwinken befragt, aber nichts Stichhaltiges dazu gefunden
Was mich daran erschreckt ist das dümpelnde Netzwerk, warum kann der FBServer-Prozess die Daten nicht schneller an den Client schicken? Lokal schnellt die CPU-Last auf dem einen Kern auf fast 100% hoch und die Antwort der Daten erfolgt fast verzugslos.
Ich habe so den Eindruck als kann/will/darf der
DB-Prozess die Daten nicht schneller bei der Netzwerkkarte abliefern? Der FBServer-Prozess dümpelt übrigens genauso vor sich hin und kommt nicht über 5% CPU-Last hinaus.
Hat jemand von Euch dazu etwas herausgefunden oder ggf. noch einen Tipp was ich übersehen haben könnte?