frindly
Goto Top

Firebird Performance bricht zusammen

Dringendes Problem mit Firebird Datenbank

Hallo
ich musste die Datenbank meines Warenwirtschaftssystems von Windows (Firebird 2.0) auf Linux (Firebird 2.13) umstellen
und habe nun ein massives Performance Problem.
Dir bisher verwendete Hardware:
Athlon64X2 4GB RAM

Jetzt
2x Xeon Dualcore , 4GB RAM

Als System habe ich Debian 5.0.7 intalliert ohne weitere Programme ausser die Datenbank und
eine Samba Freigabe.

Unter Windows lief die Datenbank performant und viel auf dem Server nicht auf.
Unter Linux ist die Performance extrem schlecht, einfache Abragen dauern bis zu einer Minute.
Die Datenbankdatei (.fdb) ist ca. 520MB gross,
und es greifen um die 20-25 Nutzer darauf zu.

Ich habe sowohl Firebird 2.0 sowie 2.1 (jeweils Classic und Superserver) probiert.
(2.5 ist vom Programmhersteller noch nicht freigegeben)
Mit wenigen Nutzern ist das Arbeiten erträglich, sobald sich mehrere anmelden
wird es unterträglich.
Vor allem im (gut gefüllten) Bereich der Lieferscheine/Angebote geht dann nichts mehr.

Bei der Datenbank habe ich auch mit verschiedenen Pagegrössen (4KB, 8KB) sowie verschiedenen
Buffer grössen experimentiert.
Im Moment steht sie sogar im (riskanteren aber hoffentlich schnelleren) Forcewrite=off Modus.

Aufgrund eines defektes am "alten" Datenbankserver muss sie nun unter Linux laufen.

Ich beobachte den Rechner mit htop, und sehe, das die 4 CPU Kerne ca. 50-70% Auslastung haben. Der Arbeitsspeicher ist mit moderaten 300MB belegt. (Swap wurde bisher nicht genutzt).
Die Netzwerkauslastung mit iftop brachte auch nichts auffälliges.
Die Datenbank habe ich mit Sinatica beobachtet und bekam eine Reihe von langsamen Abragen angezeigt.
Das Ergebnis habe ich zum Programmentwickler geschickt, aber bisher ohne das ich ein Patch bekommen habe.
Da ich selbst kein Datenbankenwickler bin, und meine Möglichkeiten beschränkt sind, da es ein Produktivsystem ist
bin ich hier für jeden Tipp dankbar!

Content-Key: 157930

Url: https://administrator.de/contentid/157930

Printed on: April 23, 2024 at 09:04 o'clock

Member: dog
dog Jan 03, 2011 at 22:48:19 (UTC)
Goto Top
Das spricht dafür, dass deiner Datenbank die Indizes fehlen.
Manche DBMS haben die lästige Eigenschaft automatisch Indizes zu bauen, wenn sie es für notwendig halten, und wenn man die dann nicht überträgt wird plötzlich alles langsam.
Ab besten du setzt vor die langsamen Abfragen mal ein EXPLAIN und dann siehst du ob die Abfrage einen Index benutzt hat und definierte Indizes kann man normalerweise auch neu aufbauen lassen.
Member: frindly
frindly Jan 03, 2011 at 22:59:00 (UTC)
Goto Top
Hallo dog,
ich muss mich mal als Nichtdatenbankadmin outen, auch wenn ich die Aufgabe jetzt habe.

Ich verstehe denn Sinn der Indizes. Aber ... auf dem Windows Server wurd die Datenbank auch öfters mit gbak gesichert und wieder hergestellt. Und sie lief immer hoch performant.
Wenn ich die unter Linux wiederherstelle, mit dem gleichen Befehl, müsste sie doch auch genauso laufen.

Da das Programm welches die Datenbank nutzt nicht von mir stammt, kann ich auch kein Explain davor setzten.
Meine Kenntnisse vom Internen Aufbau reichen auch nicht, um sie mit Flamerobin zu bearbeiten.
Da das System Produktiv läuft, kann ich immer nur mit einer Testdatenbank arbeiten.
Aber die läuft, auch mit 2 Benutzern immer performant.

Wie kann ich Indizies neu aufbauen lassen bei Firebird???
Member: dog
dog Jan 04, 2011 at 09:38:03 (UTC)
Goto Top
Wie kann ich Indizies neu aufbauen lassen bei Firebird???

kA. Ich habe noch nicht mit Firebird gearbeitet.
Member: frindly
frindly Jan 06, 2011 at 15:15:37 (UTC)
Goto Top
Hallo
ich habe beim alten SErver gesehen,
das die Datenbank auf einem Laufwerk lag,
das als RAID 0 von zwei Platten zusammengefasst war.

Die Verbauten Platten sind dazu auch noch schneller,
als in dem aktuellen Rechner.

KAnn dieser Trick einen derartigen Performancegewinn bedeuten?

Ist der Unterschied durch Raid 0 so gross???
Member: dog
dog Jan 06, 2011 at 16:11:49 (UTC)
Goto Top
Eine Datenbank hat NIEMALS etwas auf einem RAID0 zu suchen!
Zudem laden aktuelle DBMS die Datenbank in den RAM, soweit möglich um Festplatten I/O zu minimieren.
Eine 520MB Datenbank könnte es natürlich in 4GB schon eng haben...

Allerdings glaube ich immer noch das Problem liegt bei den Indizes...
Member: frindly
frindly Jan 06, 2011 at 21:44:13 (UTC)
Goto Top
hallo dog,

prinzipiell gebe ich dir recht. ich habe den rechner ja auch nicht eingerichtet. währe mir auch nicht eingefallen das auf nen raid 0 zu legen.
aber ich gehe alle möglichkeiten durch. auf dem windows server liegt sie auf einem raid0 was mir den anschein macht, als wollte da jemand ganz agressiv ein performanceproblem lösen.

wie gesagt, ich kenn mich mit den interna nicht aus, was datenbanken angeht.
aber wenn sowohl bei windows wie auch linux firebird 2.1.3 installiert ist,
sollte es ähnlich schnell sein.

der datenbank kann es doch egal sein, ob sie auf linux oder windows läuft,
und der linux rechner ist ja schlanker installiert, ohne grafik und schnickschnack.

der belegte arbeitsspeicher liegt übrigends bei ca. 1 gb, es ist also noch reichlich platz im ram vorhanden.