AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird optimal einstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird optimal einstellen

Ein Thema von csaeum · begonnen am 6. Okt 2014 · letzter Beitrag vom 11. Okt 2014
Antwort Antwort
Seite 2 von 3     12 3      
csaeum

Registriert seit: 6. Okt 2014
6 Beiträge
 
#11

AW: Firebird optimal einstellen

  Alt 7. Okt 2014, 21:05
Wieso weshalb warum Dialect1 darfst du mich nicht fragen. Das hat die Firma Vario zu verantworten?

Das langlaufende offene Tranaktion waren kann ich bestätigen.

Nach fast 24h hat er einen Job immernoch nicht fertig gemacht gehabt und ich habe dann abgebrochen.

Darum nun auch der Thread hier. Laut meinen Recherchen denke ich mal das ihr mir helfen könnt. Die Firma Vario meinte ja ich sollte bis November warten erst dann hätte der "Firebird Spezialist" Zeit für uns.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Firebird optimal einstellen

  Alt 7. Okt 2014, 21:20
Zwischen der nächsten gestarteten und der ältesten Transaktion liegen 6000 Transaktionen. Da ist wirklich etwas faul. Bei einem Vorgang sollten keine 6000 Tranaktionen gestartet werden. Zudem sieht es aus, als ob diese nicht abgeschlossen werden. Viele offene Transkationen sind Gift für Firebird. Man solte sich die Abfragen mal ansehen.
Markus Kinzler
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#13

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 07:29
Wo soll ich da jetzt am Besten anfangen, was man normal über private Kanäle versucht zu erklären ...

Grundsätzlich bin ich der Meinung, dass man heutzutage viel zu schnell mal in Richtung SSD geht, was in der Regel dann das echte Problem halt verschleiert. Man kann mit rotierenten Platten locker Umgebungen mit > 100 Benutzer bedienen, vorausgesetzt:
  • Grundlegende Firebird-Settings sind berücksichtigt
  • Das (physische) Datenmodell passt
  • Der/die Entwickler haben schon mal was von Transaktionssteuerung in der Client-Anwendung gehört
  • SQLs sind optimiert (SQL Performance)
  • Verarbeitung am Client vs. am Server mit Stored Procedures/Trigger
  • Etwas Server-Hardware

Server-Hardware ist meistens da. Da läßt man sich nicht lumpen, ist ja Ehrensache.

Aus meiner Erfahrung haperts immer, na vielleicht zu 90%, an den anderen Sachen. Ein Steckenpferd ist SQL Performance. Es gibt nicht grundlos Bücher die sich rein mit diesem Thema beschäftigen. Firebird ist hier keine Ausnahme. Warum auch. Ich hab schon Umgebungen gesehen, die mit < 10 Usern eine potente Umgebung in die Knie bekommen haben.

Zurück zum Problem des Thread-Erstellers: Da er 2.5 einsetzt, hat er bzgl. dem Monitoring jegliche Möglichkeiten, ohne dabei den Softwarehersteller zu brauchen, da das schön transparent mit den Monitoring-Tabellen und der Trace API möglich ist. Es gibt auch Tools dafür, die hier einem den Einstieg enorm erleichtern. Ich mach jetzt keine Werbung ...

Mit diesen Mitteln hat man sehr, sehr oft in 15 Minuten die Top-Hitters auf SQL Ebene identifiziert, sofern man in diesem Zeitraum eine repräsentative Last erzeugen kann. Die langlaufende Transaktion (OAT) sollte in MON$TRANSACTIONS auftauchen. Oft ist das "Problem" mit der OAT einfach die Verwendung von AutoCommit in der Client-Anwendung, die in der Regel im Hintergrund mit einem COMMIT RETAINING abgeschlossen wird, was die Transaktion physisch so richtig nicht beendet. Wo wir wieder beim Thema "Transaktionsteuerung" wären.

Auf der Settings-Ebene gibts dann halt noch Themen wie: Erhöhung von PageBuffers, In-Memory Sort Space, HashSlots (vor allem wichtig für Classic/SuperClassic) etc. Bei allen diesen Themen darf man nicht vergessen, dass auch noch der OS Filesystem Cache da ist ...

Ach ja, eine Transaktion-ID Differenz von 6000 ist Kindergarten. Das merkt man an der Performance rein gar nicht. Spannend wirds im 6 oder 7-stelligen Bereich
  Mit Zitat antworten Zitat
csaeum

Registriert seit: 6. Okt 2014
6 Beiträge
 
#14

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 08:14
Danke tsteinmaurer

du sprichst mir aus der Seele, ich bin ja im IT Bereich nicht unerfahren aber mit Firebird steck ich in den Kinderschuhen.

Das man mit SSD erstmal verschleiert unterschreibe ich dir.

Wie würdet ihr nun vorgehen. Die Tools sagen mir erstmal alle nichts und auch nicht wie man diese handhabt. Wie sollte man die Caches einstellen usw damit man erstmal mit den Teil wirklich weiterarbeien kann. Da es eine ERP ist und wir derzeit 2 Artikel mit jeweils 2078 Kinderartikeln haben sollten die erstmal in den Shop hochgeladen werden. Dazu hat er zuletzt in 24h es nicht geschafft.

Wir sind hier am Anfang und wenn wir es so durchziehen muss er später auch mal 100 Artikel mit jeweils 2078 Kinder hochladen können. Ich denke hier müssen die Caches noch besser werden damit er schneller wird. Beim erstellen dieser konnte ich ja auch schonmal was rausholen wie im 1. Post.

Was sollte man erstmal nehmen Super - Classic oder SuperClassic?

Was empfiehlt ihr? Weil dann kann ich die Caches mal optimieren. Falls ihr hier eine empfehlung habt wäre ich auch dankbar.

Gruß und Danke schonmal an allen hier in der Runde

chris
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 10:35
Die Ursache der Geschwindigkeitsprobleme scheinen mir eher auf Seite der Anwendung zu liegen. Das kann verschiedenste Ursachen haben. Von der Struktur in der die Daten erfasst sind (z.B. in welche Kategorie bestimmte Artikel gehören, Einstellungen wie diese bei der Kalkulation zu berücksichtigen sind, usw.) bis zu Schwächen beim Entwurf der Datenbankstruktur. Letzlich kann nur der Hersteller der Software den Support liefern. Wenn schon jetzt in der Einführungsphase kein ausreichender Support geliefert werden kann, wie soll das erst bei Störungen im laufenden Betrieb funktionieren? ERP-Systeme gibt es reichlich am Markt, da sollte man sich die Frage stellen, ob man die richtige Entscheidung getroffen hat und welche Alternativen zu diesem Zeitpunkt noch bleiben.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#16

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 11:12
@csaeum: Ich kenn das ERP nicht, noch was eine "Variante" in diesem ERP ist. Solange man das Problem nicht eingrenzen bzw. genauer beschreiben kann, werden wir hier in einem öffentlichen Forum keine Chance haben dir zu helfen. Wie ich vorher schon geschrieben habe liegt es meistens an der Anwendung, einem schlechten physischen Datenmodell (fehlende Indizes ...) etc.

Aus meiner Sicht kannst du ohne der Unterstützung des Herstellers folgendes machen:
  • Benchmarking deiner Storage, ob vielleicht was mit dem RAID (Controller) ist.
  • Sofern du Firebird 64-bit verwendest, bei SuperClassic bleiben. Wenn Firebird 32-bit (z.b. durch Limitierung einer Third-Party UDF Library), dann Classic.
  • Page Buffers auf Datenbankebene auf 2048 setzen. Geht mit dem gfix tool.
  • LockMemSize und LockHashSlots in firebird.conf um einen Faktor 10 erhöhen. LockHashSlots sollte eine Primzahl sein, d.h. entsprechend geringfügig auf/abrunden. TempCacheLimit in firebird.conf auskommentieren, damit die ca. 64MB greifen. => Danach ist ein Restart des Firebird Dienstes notwendig.
  • FB TraceManager runterladen (http://www.upscene.com/fb_tracemanager/) und via Monitoring Tables und der Trace API schaun, welche Statements wieviel brauchen. Mit der Trace API bekommt man dann auch ev. ein Gefühl wie so der Ablauf im ERP für einen "Geschäftsprozess" Firebird-seitig ist

Sofern die ersten 4 Punkte nicht den erwarteten Erfolg bringen, dann läufts im Prinzip darauf raus, dass man mit dem Monitoring dem Hersteller die Hotspots/Probleme aufzeigt. Spreche hier aus Erfahrung ...

Ich hoffe, dass dir das jetzt konkret genug war.
  Mit Zitat antworten Zitat
csaeum

Registriert seit: 6. Okt 2014
6 Beiträge
 
#17

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 20:14
Danke tsteinmaurer

das ist mehr wie ich gedacht habe:
Ich habe nun die DefaultDbCachePages = 2048 gesetzt.
Nun muss ich noch die Buffers auf 2048 setzen. Kann ich das im laufenden Betrieb machen?

Code:
gfix.exe -buffers 2048 DB
Werde mal berichten wie es läuft.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#18

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 22:05
DefaultDbCachePages = 2048 in firebird.conf wird nur dann verwendet, wenn auf Datenbankebene Page Buffers = 0 ist. Wenn du aber den Wert auf Datenbankebene mit gfix setzt, dann kommt der Default in firebird.conf nicht zum Zuge. Aber da du beide Werte gleich setzt ist es egal.

Ja, du kannst den Page Buffers mit gfix während des Betriebs setzen, aber diese Änderung wird erst für neue Connections wirksam, d.h. bestehende Connections bleiben davon unbetroffen.
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#19

AW: Firebird optimal einstellen

  Alt 10. Okt 2014, 10:59
Moin,

kleine Anmerkungen aus meiner Sicht:

SSDs bringen gerade bei Firebird immer Vorteile, die man auch durch optimierte Programmierung nicht aufholen kann. Wir gehen aber eh davon aus, das man nicht irgendwelche sinnlosen SQLs auf die Datenbank loslässt, wobei das natürlich in erster Linie in der Verantwortung des Softwareherstellers liegt. Man sollte aber zuverlässige Enterprise SSD Hersteller setzen, die auf eine Schreibleistung und Haltbarkeit garantieren, dann aber trotzdem regelmäßig die SSD gegen neue austauschen. So ähnlich wie ein Ölwechsel beim Motor.

Wir bekommen regelmäßig Rückmeldungen durch den Benchmark in der IBExpert Vollversion, die einen realen Firebird Datenbanktest abbildet mit 10 parallelen
Threads. Man bekommt am Ende 2 Messwerte, einen für Firebird mit extrem kleinem Cachebuffer=50 und einen für normale Einstellung =5000
Den mit 50 Buffers nennen wir Drive Index, weil dabei hundertausende Pages von der Platte gelesen oder wieder zurückgeschrieben werden, bei der größeren Einstellung
passiert kaum was auf der Platte, daher ist da in erster Linie Anbindung CPU/Mainboard/Ram wichtig, den Wert nennen wir CPU Index.

Aktuelle Standardwerte liegen bei den Kunden zwischen 5 % und 40 % der Leistung, die unser IFS Referenzserver vor 4 Jahren hatte und die wir daher auf 100% referenziert haben. Der aktuelle IFS Basic Referenzserver hat einen Driveindex von mindestens 250% und einen CPU Index von mindestens 150%, Kostenpunkt dafür bei uns ab ca. 1500 €, ausgelegt für bis zu 100 User und bis 50GB Datenbankgröße.

Oder mit anderen Worten: Der gleiche Test, der auf der Maschine mit 5% Leistung 1000 Sekunden braucht, läuft auf dem aktuellen Server in 20 Sekunden durch.

Wenn du das auch mal testen willst und schon eine aktuelle IBExpert Vollversion hast, findest du das unter services - Benchmark

Wir schalten dir ggf auch gerne mal eine Tageslizenz kostenlos frei, damit kannst du den Wert auch ohne aktuelle IBExpert Vollversion ermitteln (Anfrage dafür gerne an sales@ibexpert.com, Ihr braucht dafür aber einen kostenlosen Account in unserem Downloadcenter).

Sehr wichtig: im Benchmark als Connectionstring immer einen Remotestring angeben, also mit servername: davor, ggf auch localhost: , sonst verfälscht der Test das Ergebnis.
Ale angezeigten Ergebnisse, neben denen nicht Drive Index oder CPU Index steht, sind Zeiten in Sekunden.

Wichtige Erkenntnisse aus dem Benchmark:

Der Classic bzw Superclassic Server ist meistens langsamer. Ursache: Firebird Datenbankoperationen sind 99% reine Byteschubserei und die CPU Berechnungen sind relativ lächerlich, so das mehrere Kerne kaum vorteile bringen, sondern meistens Nachteile, denn der Benchmark verursacht auf dem Superserver ca. 14 GB Lese und Schreib Operationen und auf dem Classic bzw Superclassic ca. 37 GB Lese und Schreib Operationen. Da der Test 100% reproduzierbar ist ist das auch überall nachvollziehbar und man sieht im Taskmanager, wie schnell die Bytes gelesen und geschrieben werden.

Wenn du nun auf einer Festplatte 100MB Lese und Schreibleistung pro Sekunde hast, wirst du dir einfach ausrechnen können, warum die SSDs mit bis zu 600MB pro Sekunde schneller sind. Da auch noch die Datenträgerlatenz dazu kommt (schnelle Festplatten haben 5ms durchschnittliche Zugriffszeit=200 IOPS, brauchbare Enterprise SSDs haben 50000 IOPS oder noch mehr) und die aufgrund der Schreibweise des Firebird Systems extrem wichtig ist, wirst du auch hier eine wichtige Unterscheidung feststellen. Und lass dich nicht täuschen, RAID Controller (auch mit SSDs dahinter) sind für Firebird meistens deutliche Bremsklötze, externe Storagesystem machen das ganz noch schlimmer (viel mehr Details gibt es dazu auch bei uns in der Profiworkshops).

Wenn du den Benchmark ausführst und in der CPU nahezu keinerlei Last sehen wirst, ist der Grund sehr einfach: Die CPU wartet auf den lahmen Datenträger.

Sehr interessant dagegen: Der IBExpert Benchmark mit Firebird 3.0 ist ca. 25% schneller als der benchmark mit Firebird 2.5. Es ist bei FB3 also wirklich noch mal ein Leistungsschub zu erwarten, wenn man Multiusermessungen macht. Im Singleuserbetrieb wird das aber kaum feststellbar sein, ist aber eigentlich auch unter fb25 schon schnell genug, wenn man nicht unsinnige SQLs ausführt oder bescheuerte Datenbankstrukturen hat.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#20

AW: Firebird optimal einstellen

  Alt 10. Okt 2014, 11:44
Hallo Holger,

Kurze Anmerkung zu:
Zitat:
Den mit 50 Buffers nennen wir Drive Index, weil dabei hundertausende Pages von der Platte gelesen oder wieder zurückgeschrieben werden
Der Filesystem Cache vom Betriebssystem ist auch noch da, d.h. ein Read/Write in der Firebird Statement I/O Statistik bedeutet nicht notwendigerweise ein echtes lesen/durchschreiben von/auf die (rotierende) Disk.

Man kann aber Firebird mitteilen, dass man keinen Filesystem Cache verwenden möchte, was bei vergleichbaren Benchmarks wo man sich mit dem PageBuffers Wert spielt, durchaus ratsam ist.

LG
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz