fenris14
Goto Top

Firebird DB hängt sich auf read errno 10054

Hallo,

ich habe hier ein, nennen wir es mal "Kundensystem", vor die Nase gesetzt bekommen das einige Stabilitäts-Probleme hat. An dem System wurde vieles falsch gemacht und ich bin auch schon dabei einige Dinge zu planen, die dann erneuert oder verändert werden müssen. Noch versuche ich mich hinein zu fuchsen.

Aber leider habe ich sogut wie keine Erfahrung mit der Firebird DB von Embarcadero. Diese wird auf dem System im Rahmen einer Laborsoftware (nichts bekanntes, kleiner Software-Hersteller, maßgeschneidert) eigentlich vollständig von einer Software-Firma betreut, aber es gibt ein Problem dessen Ursprung wir nicht klar finden können. Der Software-Dienstleister verweist dann allzu gern auf mich und das Problem soll wohl möglich irgendwo im Netzwerk zu finden sei, ohne konkret anhand von z.B. Log-Dateien Hilfestellung zu geben. Es ist wieder die berühmte Suche nach der "Nadel im Heuhaufen".

Habe mir erst mal einen Überblick verschafft...

Das System (Zusammenstellung ist schon total Banane und absolut nicht auf den Einsatzzweck bezogen):

  • Dedizierter Server (nix Virtualisierung)
  • CPU 2x Xeon Silver 4208
  • 32Gb RAM
  • 1Tb M.2 SSD aus dem Consumer-Bereich
  • Raid-Controller mit zwei Raid1 aus je 2x4Tb HDD
  • Windows 10 Pro

Wie man sieht schon sehr laienhafte Zusammenstellung, Irgendwie zuviele Kerne, dafür das sowieso alles dediziert ist und fast ausschließlich Single-Core-Belastung stattfindet. Windows 10 Pro das für diesen Einsatz weder vorgesehen noch richtig lizenziert ist. Der größte Witz kommt jetzt aber:

Die Anwendungen, also der Zauber, findet hauptsächlich auf den Clients statt. Diese führen Programme aus die auf einer SMB-Freigabe liegen und sozusagen die Maske für die Eingabe der Daten in die DB bereitstellen. Die Clients sind mit einer OBDC-Verbindung mit der Datenbank direkt verbunden.

Jetzt passiert es des öfteren das eine entsprechende Datenbank gelockt wird und keine weiteren Eingaben von anderen Clients mehr getätigt werden kann. Im Log der FirebirdDB gibt es aber nur den Hinweis:

INET/inet_error: read errno = 10054, client host = ein x-beliebiger Client

Der Fehler lässt darauf schließen das die Verbindung zur Datenbank zu einem Client abgerissen ist und die Datenbank aber auf ein Vollenden des Commits wartet. Dies soll nach einiger Recherche auftreten, wenn die Verbindung etwa bei WLAN zu instabil ist.

Leider ist der genannte Rechner nicht zwingend der Rechner der die Verbindung verloren hat, das zumindest versicherte mir der Software-Anbieter und nur der Folgefehler da die entsprechende Datenbank gesperrt sei. Leider ist der Zeitpunkt im Log wohl auch nicht viel wert, da der aufgetretene Lock schon mehrere Minuten davor stattgefunden haben kann.

Folgende Sachen habe ich geprüft::

  • Windows Logs gecheckt - Zeiträume großzügig verglichen > Nichts
  • Datendurchsatz und Latenzen im Netzwerk gemessen ( Durchschnitt bei 930Mbits mit iperf3 getestet und eine Latenz von 0.63ms bei 500 4k-Blöcken gemessen mit psping) > Nichts
  • Langzeit-Monitoring der Switche > Keine SNMP-Warnings, keine Fehler in den Statistiken bei den betreffenden Schnittstellen von Server und Clients
  • Auslastung des Systems > Nichts

Sachen die umgestellt werden:

  • Virtualisierung
  • Umstellung Windows Server 2016 Standard (vorhanden)


Leider ist das für mich nicht befriedigend, wenn ich einfach nur die Neuinstallation durchführe und nicht weiß woran es hakt. Ich sehe auch kein Problem im Netzwerk, nicht mal ein Verdacht konnte sich erhärten. Bisher ist mir nur eines aufgefallen: Die Freigabe für die Programme liegt auf dem selben Server und es greifen Zeitweise mehr als 20 Rechner auf diese zu, Windows 10 unterstützt aber nur maximal 20 Verbindungen bei SMB-Freigaben... was mich wieder zu besagter Umstellung auf Windows Server bringt. Aber die Clients können sich soweit ich das sehe nicht selbst die Verbindungen wegnehmen, wer zu erst kommt malt zuerst.

Mein nächster Schritt wäre jetzt Wireshark zu installieren und eine Aufzeichnung allen Netzwerkverkehrs anzufertigen. Da ich den Fehler aber nicht reproduzieren kann, wird das es eine verdammt riesige Aufzeichnung und man weiß dann immer noch nicht, nach was man genau suchen soll.

Deshalb meine Frage: Wie kann ich den Fehler anhand der FirebirdDB weiter eingrenzen? Gibt es noch andere Logs oder Prüfmittel? Gibt es irgendeine Möglichkeit herauszufinden, welcher Rechner den Lock verursacht hat?

Würde mich über Hilfe sehr freuen.

Gruß

Content-Key: 631653

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

Printed on: May 10, 2024 at 07:05 o'clock

Member: gilligan
gilligan Dec 15, 2020 at 14:36:22 (UTC)
Goto Top
Du wirst immer der Schuldige bleiben- Angebot erstellen für neues System, Kunde bezahlt Lehrgeld und alles wird gut.
Member: Vision2015
Vision2015 Dec 15, 2020 at 15:00:46 (UTC)
Goto Top
Moin...

was für eine Firebird version genau, Calsic oder Superserver?
AV Programm ?

Frank
Member: Fenris14
Fenris14 Dec 15, 2020 updated at 16:34:52 (UTC)
Goto Top
Firebird Version 3.0.4

Superserver

AV ist Windows Defender aktiviert. Mehr nicht.
Member: Fenris14
Fenris14 Dec 15, 2020 at 16:35:39 (UTC)
Goto Top
Sorry habe mich vertan, es ist ein Superserver. Also ein einzelner Prozess für alle Verbindungen und ein gemeinsamer Cache.
Member: StefanKittel
StefanKittel Dec 15, 2020 at 17:50:16 (UTC)
Goto Top
Hallo,

schau mal ob es ein slow query log gibt oder man es aktivieren kann.

Gibt es für die DB einen Status?
In MySQL kann man recht einfach den Client sehen der die DB aktuell sperrt.

Du benötigst etwas um dem Problem näher zu kommen.
Es kann auch ein defektes Netzwerkkabel an einem PC sein.

Für Wireshark oder ein vollständiges Protokoll am DB-Server dürfte die Datenmenge zu groß sein.

Es kann auch ein Bug in der Software sein.

Stefan
Member: Vision2015
Vision2015 Dec 15, 2020 at 18:16:32 (UTC)
Goto Top
moin...
schalte den defender ab, oder erstelle eine ausnahme für den firebird...

installiere den Classic Server mal bitte...

Frank
Member: Fenris14
Fenris14 Dec 16, 2020 at 07:35:09 (UTC)
Goto Top
Slow query log scheint es nicht zu geben. Es gibt eine sogenannte Trace API die seit 2.5 implementiert ist. Um diese zu aktivieren, muss ich aber Rücksprache mit dem Software-Anbieter halten. Generell habe ich nicht viel Zugriff auf die Datenbank, die verwenden zur Wartung das IBExpert. Da fehlen mir aber die Zugangsdaten.


Zitat von @Vision2015:

moin...
schalte den defender ab, oder erstelle eine ausnahme für den firebird...

installiere den Classic Server mal bitte...

Im Defender habe ich jetzt mal die firebird.exe und die DB-Files als Ausnahme hinzugefügt. Installation von Classic Server habe ich auch schon angesprochen bei dem Software-Anbieter, da es sich für mich so anhört als würde dort diesem Problem entgegen gewirkt werden können, da jede Verbindung einen Prozess hat. Die meinten aber, das es von Nachteil ist, da sonst jeder Client seinen eigenen Cache aufbauen müsste.

Dann habe ich noch herausgefunden das es eine dritte Variante des Firebird DB gibt: SuperClassic - wohl eine Kombination aus beidem.

Im Hinblick das weder Classic noch SuperClassic installiert ist, wundern mich die Peaks immer nur auf einem Thread überhaupt nicht mehr.
Member: Fenris14
Fenris14 Dec 18, 2020 at 13:40:14 (UTC)
Goto Top
Ich habe mich jetzt mal eingehend mit der Firebird DB, im Zuge meiner Virtualisierungspläne, auseinandergesetzt. Dabei habe ich auch Kenntnisse über mögliche Optimierungen gewonnen.

So einfach wie ich es dachte, ist es mit Virtualisierung nicht. Mir kommt es gar so vor, als wäre die Firebird DB ein ziemlicher Ressourcen-Fresser, auch wenn Andere in den einschlägigen Foren das Gegenteil behaupten. Sogar meinen das es normal wäre.

Firebird selbst empfiehlt keine Installation in einer VM:

https://www.ibexpert.net/ibe_de/pmwiki.php?n=Doku.FirebirdPerformanceRec ...

Vor allem letzter Absatz ist entscheidend.

Ich versuchen mich an diesen Leitfaden zu halten:

https://ib-aid.com/en/articles/45-ways-to-speed-up-firebird-database/

Beim Durchforsten von diversen Themen in verschiedenen Foren im Web, wird eine Installation von Linux oder Windows direkt aufs Blech mit Enterprise-SSD empfohlen. Aber der Tenor bei Performance-Problemen: ~98% kommen Probleme von der APP/Programm die die Datenbank verwendet.

Aber es ist schon Wahnsinn: Die Datenmenge von 200Gb ist eigentlich gar nichts und dennoch fühlt sich alles lahm und träge an. Ich habe MySQL-Server in Containern installiert und Linux die teilweise 30-40 gleichzeitige Zugriffe haben und eine Datenmenge von 300Gb und mehr beherbergen... die kommen nicht mal ins Schwitzen.

Für meinen Geschmack wird der DB Server viel zu oft von den Usern neugestartet. Ja, richtig gelesen, die User (meinst Abteilungsleiter) dürfen den Server neustarten. Da es sehr oft zu irgendwelchen Problemen kommt: Mal kann auf einen Datensatz nicht mehr zugegriffen werden, mal hängen sich die Programme auf.

Irgendwie schwer hier einen Hebelpunkt zu finden.
Member: Vision2015
Vision2015 Dec 18, 2020 at 14:15:01 (UTC)
Goto Top
moin...
Zitat von @Fenris14:

Ich habe mich jetzt mal eingehend mit der Firebird DB, im Zuge meiner Virtualisierungspläne, auseinandergesetzt. Dabei habe ich auch Kenntnisse über mögliche Optimierungen gewonnen.
oha..

So einfach wie ich es dachte, ist es mit Virtualisierung nicht. Mir kommt es gar so vor, als wäre die Firebird DB ein ziemlicher Ressourcen-Fresser, auch wenn Andere in den einschlägigen Foren das Gegenteil behaupten. Sogar meinen das es normal wäre.

Firebird selbst empfiehlt keine Installation in einer VM:
na ja... das Firebird nicht der schnellste iost, wissen wir schon lange...
wenn ich sowas lese

Vor allem letzter Absatz ist entscheidend.
Virtuelle Server büßen zwischen 20% und 80% ihrer Geschwindigkeit unter einer hohen Last auf einer VM ein
das ist blödsinn, wenn du den richtigen Server hast, hast du auch keine einbußen, und es kommt ja auch auf verwendung und hardware an... server ist nicht gleich server.....
Ich versuchen mich an diesen Leitfaden zu halten:

https://ib-aid.com/en/articles/45-ways-to-speed-up-firebird-database/

Beim Durchforsten von diversen Themen in verschiedenen Foren im Web, wird eine Installation von Linux oder Windows direkt aufs Blech mit Enterprise-SSD empfohlen. Aber der Tenor bei Performance-Problemen: ~98% kommen Probleme von der APP/Programm die die Datenbank verwendet.
das mit der Enterprise-SSD / NVMe ist soweit richtig, das mit den Programmen auch!
allerdings geht es auch auf einer VM.....

Aber es ist schon Wahnsinn: Die Datenmenge von 200Gb ist eigentlich gar nichts und dennoch fühlt sich alles lahm und träge an. Ich habe MySQL-Server in Containern installiert und Linux die teilweise 30-40 gleichzeitige Zugriffe haben und eine Datenmenge von 300Gb und mehr beherbergen... die kommen nicht mal ins Schwitzen.
jo...

Für meinen Geschmack wird der DB Server viel zu oft von den Usern neugestartet. Ja, richtig gelesen, die User (meinst Abteilungsleiter) dürfen den Server neustarten. Da es sehr oft zu irgendwelchen Problemen kommt: Mal kann auf einen Datensatz nicht mehr zugegriffen werden, mal hängen sich die Programme auf.
nun, das scheint aber eher ein programm bzw. netzwerk problem zu sein...
da würde ich von unten anfangen zu suchen... was für hardware steht dahinter, was für ein Netzwerk, was für clients usw...


Irgendwie schwer hier einen Hebelpunkt zu finden.
Frank
Member: Fenris14
Fenris14 Dec 18, 2020 updated at 15:29:25 (UTC)
Goto Top
Wie gesagt ich kenne den Firebird noch nicht sehr lange. Das was man so liest ist nicht gerade ermutigend.

Ich habe zum Beispiel gerade eine Test-VM mit Firebird installiert. Wenn ich das Benchmark-Tool von IBExpert verwende, performt das sehr sehr schlecht.

Storage für den Test ist ein ZFS Raid 1 aus zwei SAS-SSD.

Problem ist, wie finde ich diese Netzwerkfehler, wenn es denn welche sind? Nirgends, weder in den Switch-Statistiken noch im Router oder auf den Rechnern selbst, ist irgendein Hinweis darauf zu finden. Wenn die Datenbank mir wenigstens sagen würde: Hey, der letzte Rechner/User hat auf Datensatz XYZ zugegriffen und dann einen Lock verursacht.

Dann könnte man das schnell herausfinden. Aber man bekommt nichts. Stattdessen nur Read Error als Folgefehler von anderen Arbeitsplätzen. Absoluter Rotz.

das ist blödsinn, wenn du den richtigen Server hast, hast du auch keine einbußen, und es kommt ja auch auf verwendung und hardware an... server ist nicht gleich server.....

Dann schlage mal was vor. Was ist den für dich ein richtiger Server mit welcher Virtualisierung, welchem Storage, der diese Anwendung ohne Probleme bereitstellen könnte?

Wäre als Orientierung mal hilfreich damit man versteht von was für Dimensionen wir hier sprechen. Das ist kleines Labor mit 20 Arbeitsstationen und einen Boliden für 10k dahin zu schmettern halte ich für wenig sinnvoll.
Member: Vision2015
Vision2015 Dec 18, 2020 at 17:36:51 (UTC)
Goto Top
Zitat von @Fenris14:

Wie gesagt ich kenne den Firebird noch nicht sehr lange. Das was man so liest ist nicht gerade ermutigend.

Ich habe zum Beispiel gerade eine Test-VM mit Firebird installiert. Wenn ich das Benchmark-Tool von IBExpert verwende, performt das sehr sehr schlecht.

Storage für den Test ist ein ZFS Raid 1 aus zwei SAS-SSD.
das sagt nix aus...

Problem ist, wie finde ich diese Netzwerkfehler, wenn es denn welche sind? Nirgends, weder in den Switch-Statistiken noch im Router oder auf den Rechnern selbst, ist irgendein Hinweis darauf zu finden. Wenn die Datenbank mir wenigstens sagen würde: Hey, der letzte Rechner/User hat auf Datensatz XYZ zugegriffen und dann einen Lock verursacht.

Dann könnte man das schnell herausfinden. Aber man bekommt nichts. Stattdessen nur Read Error als Folgefehler von anderen Arbeitsplätzen. Absoluter Rotz.
jo...

das ist blödsinn, wenn du den richtigen Server hast, hast du auch keine einbußen, und es kommt ja auch auf verwendung und hardware an... server ist nicht gleich server.....

Dann schlage mal was vor. Was ist den für dich ein richtiger Server mit welcher Virtualisierung, welchem Storage, der diese Anwendung ohne Probleme bereitstellen könnte?
so von der stange geht das nicht... dafür wäre es wicht zu wissen was an leistung gebraucht wird...

Wäre als Orientierung mal hilfreich damit man versteht von was für Dimensionen wir hier sprechen. Das ist kleines Labor mit 20 Arbeitsstationen und einen Boliden für 10k dahin zu schmettern halte ich für wenig sinnvoll.
das lässt sich so nicht sagen, ich habe kunden mit 5 plätzen und Server Hardware für 25K... und 20 User die kommen mit 5K aus!
wenn ich lese, was da weiter oben steht, was ihr für einen server habt, will ich nicht wissen wie das netzwerk aufgestellt ist...
alleine windows 10 als Serer BS taugt nix...
was läuft den noch auf dem blech?

Frank
Member: Fenris14
Fenris14 Dec 19, 2020 at 09:29:47 (UTC)
Goto Top
Zitat von @Vision2015:

Zitat von @Fenris14:

Wie gesagt ich kenne den Firebird noch nicht sehr lange. Das was man so liest ist nicht gerade ermutigend.

Ich habe zum Beispiel gerade eine Test-VM mit Firebird installiert. Wenn ich das Benchmark-Tool von IBExpert verwende, performt das sehr sehr schlecht.

Storage für den Test ist ein ZFS Raid 1 aus zwei SAS-SSD.
das sagt nix aus...

Inwiefern sagt das nichts aus? Das das Benchmark-Tool komische Sachen testet und es dann im Einsatz ohne Probleme performt, oder das es die falsche Storage-Lösung ist und man es anderweitig besser virtualisieren könnte?

Was an Leistung gebraucht wird, ist schwer zu ermitteln. Mehr geht immer, aber ob es dann noch im Verhältnis steht ist die entscheidende Frage. Nach jetzigen Stand ist es so, wenn die Datenbank funktioniert ist die Perfomance zufriedenstellend. Aber wie es umgesetzt wurde ist eben zweifelhaft.

Zum Thema Netzwerk

Ich bin das jetzt nochmal durchgegangen. Ansich ist das Netzwerk gut aufgestellt.

Core-Switch bildet ein Brocade ICX 7250-Cluster (drei Geräte, 10Gbit) konfiguriert als hitless failover. In den neun Verteiler-Schränken sind verschiedene Cisco SG200, SG300 und SG350X. Single Span ist konfiguriert. 10 VLANs aktiv. pfSense als Router auch für VLAN, hat auch genügend Leistung um ohne Probleme den Durchsatz von 10Gbit zu händeln. DSCP läuft. Jeder Client mit Gbit Verbunden. Durchsatz mit Iperf bei ~110MB/s, maximale Latenz mit psping gemessen und verschiedenen tos-Werten variiert liegt bei ~0.6ms im Routine-Betrieb zum entferntesten Client.

Der Server ist mit einem einzelnen 1Gbit Link angebunden. Das war sogar meine erste Vermutung das das der Flaschenhals sein könnte, hat sich aber nicht bestätigt. Der Durchschnitt der Utilization der Schnittstelle zum Switch lag bei 50Mbits. Was also gar nichts ist.

Die einzigen zwei Punkte die ich hier etwas kritisch sehe:

  • Die Cisco-Switche sind mit dem Core nur über 1Gbit LWL angebunden, DCSP ist aber aktiv und funktioniert, Auslastung ist aber auch nicht gerade hoch.
  • DSCP ist an der Schnittstelle am Switch zum Server aktiv, aber die Pakete werden nicht getagt. Kann ein Problem sein, da jeglicher Verkehr immer in der selben Queue liegt und somit nicht priorisiert wird. Kann man irgendwie am Firebird ein Option für DSCP aktivieren? Oder muss ich hier Windows Registry- oder Firewall-Verrenkungen machen?

Auf dem Blech läuft jetzt noch Dokumenten-Software, die gescannte Dokumente in die Datenbank schiebt und diverse SMB-Freigaben für Client-Programme. Die Freigaben sind mir ein Dorn im Auge, wenn da mal größere Dateien draufgeschoben werden, beginnt ein Verdrängungswettbewerb.

Interessanterweise habe ich die genannten Probleme auf einer identischen Installation bei einem anderen Kunden nicht. Wobei man sagen muss das dort auch grundlegend andere Server-Hardware im Einsatz ist. Dort ist das Netzwerk sogar noch schlimmer: Eine riesiger Adressraum für alle Clients und Server. Keine VLANs, kein QoS.
Member: Fenris14
Fenris14 Dec 21, 2020 at 08:06:36 (UTC)
Goto Top
Habe jetzt gerade wieder einen Ausfall gehabt und habe an verschiedenen Stellen verglichen. Dazu habe ich versucht zu schauen was unmittelbar vor dem Lock der Datenbank passiert... im Netzwerk, auf dem Server.

6:49 Uhr war der erste Lock auf der DB. Die Uhrzeit bedeutet für mich, das davor keine hohe Belastung stattgefunden haben kann, da zu diesem Zeitpunkt erst die Arbeitsplätze gestartet werden. Ansonsten laufen in diesem Zeitraum auch keine Scripts oder große Kopieroperationen im Netzwerk.

SNMP Log Auszug:

auswahl_041

Die "Sensor Deleted"-Einträge sind Implementierungs-Probleme im Zusammenhang mit Observium. Ansonsten sehe ich hier nur Rechner die gestartet wurden.

Auf dem Access-Switch habe ich mal die Port Utilization des LWL-Uplinks (XG1) angesehen, die letzte Stunde nicht mal über 1% hinaus gekommen. Auf dem Core-Switch das selbe Bild.

Latenz könnte aber immer noch ein Problem sein. Ich werde jetzt mal den Port 3050 mit Wireshark auslesen und die Latenzen überprüfen.

Am letzten Wochenende habe ich dann nochmal mit dem Firebird-Datenbank herumgespielt: Es gibt ein Workaround das linear Last auf einer beliebigen Datenbank erzeugt. Es werden grob gesagt 1 Mio. Einträge gelöscht, aktualisiert und erstellt. Davon werden jeweils die Zeiten ermittelt.

Der erste Versuch war wie erwartet eher mau. Auf einem Server mit 24 Threads, 32Gb RAM und einer 0815-SSD. Habe dann in der database.conf für die entsprechende Datenbank mal folgende Option gesetzt:

main.fdb=C:\Databases\main.fdb
{
	DefaultDbCachePages = 250K 
}

Alleine diese Option bewirkte das sich das Aktualisieren und Löschen von Einträgen signifikant verbesserte. Ich spreche hier von Leistungsverbesserungen im Bereich von 70%. Es wird mehr Arbeitsspeicher verwendet. Auf dem Problemkind-Server sind diese Optionen schon gar nicht gesetzt!

Warum dies nicht der Fall ist, muss ich erst in Erfahrung bringen.
Member: Fenris14
Fenris14 Dec 21, 2020 at 10:54:34 (UTC)
Goto Top
Ich habe jetzt auch nochmal den Netzwerk-Verkehr analysiert, dabei habe ich mich komplett auf den Port 3050 konzentriert. Aufzeichnung ging knapp über eine halbe Stunde.

Hier der I/O Graph:

auswahl_044

Soweit so normal. Es wurden halt nur Pakete zum und vom Port 3050 aufgezeichnet. Dabei passiert natürlich auch nur dann was, wenn in der Datenbank etwas gemacht wird.

In dieser halben Stunde gab es zwei Retransmissions, was auf Packet Loss hinweisen könnte:

auswahl_043

Einer der beiden Rechner ist scheinbar immer ziemlich unbeaufsichtigt, dienst dem Software-Dienstleister als Wartungs-Rechner. Der andere ist eine Arbeitsstation. Aber ganz ehrlich: das ist sogut wie gar nichts. Es sei denn die Firebird DB ist so empfindlich... dann kann ich mir kaum vorstellen wie das bei anderen laufen soll.

Viel mehr sorgen macht mir das hier:

auswahl_045

Wenn ich das richtig verstehe, handelt es sich dabei um Pakete die nicht dem sonstigen Format entsprechenden. Zum Beispiel ein Programm das ebenfalls versucht auf Port 3050 zu senden, oder ein Versuch in einem Format zu senden das völlig vom zu erwartendem Standard abweicht.

Mir scheint es so, als würde ein falsch konfigurierter Client versuchen auf eine alte Datenbank zuzugreifen. Wobei ich mir jetzt nicht sicher bin, ob dies auf Dauer zu meinem Problem führen kann, oder ob man das vernachlässigen kann. z.B.:

auswahl_046

Diese Datenbank gibt es nicht.

In der firebird.conf war im übrigen ein DefaultDbCachePage auf 100k gesetzt. Leider bin ich mir nicht sicher für was dies gilt. Für alles Datenbanken oder für jede 100K?

Habe es in Absprache nun anders gemacht: In databases.conf kann man für jede einzeln den Cache festlegen. Somit kann man den maximalen Cache von 300k per Gewichtung auf jede einzelne DB anpassen/festlegen. Ich werde mal schauen wie das läuft.
Member: DeathSythe
DeathSythe Mar 22, 2021 at 14:17:59 (UTC)
Goto Top
Hat sich mittlerweile etwas neues ergeben? Wir haben die selben Probleme. Bin noch neu in diesem Bereich und übernehme in Zukunft das System. Bei uns ist der Fehler INET/inet_error: read errno = 10054 über alle Clients verteilt.
Member: Fenris14
Fenris14 Mar 23, 2021 at 10:51:05 (UTC)
Goto Top
Das Problem ist nicht wirklich eingrenzbar. Die Ursachen die in Frage kommen, wurden geprüft und da gab es keinen Hinweis darauf.

Komplette Infrastruktur aktualisiert, Optimierungen vorgenommen... Fehler nach wie vor vorhanden. Die Entwickler-Firma konnte das Problem lindern, in denen sie Manuell Deadlocks filtert und diese nach einer bestimmten Zeit zurücksetzt.

Die Ursachen können vielfältig sein, manches driftet dann schon eher in den Bereich der "Mythen und Legenden" ab.

  • Latenz i.O.
  • Paketverlust i.O.
  • Bandbreite i.O.

Jetzt fangen wir an pauschal alle Patchkabel zu tauschen und bei allen Clients zur Sicherheit solche Sachen wie Energiesparfunktionen (802.3az, Windows-Leistung, Leitungsgeschwindigkeit fest, usw. usf.) zu deaktivieren. Obwohl es da keine Hinweise auf Probleme gibt.

Als nächstes wird dann Server neu gemacht, der jetzt noch auf Win10 läuft. Dieser wird virtualisiert und auf Windows Server 2016 komplett neuinstalliert. Derzeit gibt es meinerseits auch gleich die Überlegung den Fileserver von dem FIrebird-DB-Server zu verbannen, da das SMB-Protokoll auf der Netzwerkschnittstelle ebenfalls erhebliche Latenzen verursachen kann.

Gibt auch Überlegungen hin zu Client-Virtualisierung auf dem selben Virt-Host. Aber in den Logs des Firebird, taucht selbst der Server ansich auf, wenn man eine Anwendung hat die über das Loopback-Interface zugreift. Mittlerweile glaube ich da sogar an einen Bug vom Firebird.

Auch die Möglichkeit auf Classic statt Super zu gehen, könnte das Problem beheben. Aber das ist alles nur raten.
Member: mejfoss
mejfoss Oct 18, 2021 at 08:46:10 (UTC)
Goto Top
Hallo, ich habe ein ähnliches Problem, hier ist der firebird samt der Apllikation auf einer VM(MS Server2012) und ich bekomme die besagte Fehlermeldung.
Abweichend ist hier noch ein OPNsense vorgeschaltet. Somit läuft das ganze über NAT. Jetzt habe ich re-transmissions mit der interneren IP des Servers auf den 445.

Die client Anwendung hat einen timeout mit der Fehlermeldung die "systemevents konnten nicht erfolgreich aktiviert werden" und werde zur Freigabe der firebird.exe aufgefordert. Auf dem Server selbst startet die Anwendung einwandfrei.

Es muss sich also um eine Problem mit der NAT Verbindung handeln. Die Ports für die Laufwerksfreigabe(445,137,139) und der Firebird sind alle geforwardet.

Für mich stellt sich hier die Frage ob es die Anwendung oder Firebird ist. Irgendwoher muss der Client die IP hinter der NAT ja bekommen.

Danke schon mal an alle die in diesen alten threat reinschauen

Gruß aus Berlin
nat_false_addr2
fehler_system_ecents_vario8
Member: aqui
aqui Oct 18, 2021 updated at 09:16:36 (UTC)
Goto Top
Die Ports für die Laufwerksfreigabe(445,137,139) und der Firebird sind alle geforwardet.
Du meinst damit doch wohl (hoffentlich) nicht das du SMB/CIFS völlig ungeschützt ins Internet exponiert hast ?!
Der Wireshark Trace hilft zudem wenig bis gar nicht wenn man nicht weiss von WO (Interface) er gezogen wurde. face-sad
Member: mejfoss
mejfoss Oct 18, 2021 at 10:04:47 (UTC)
Goto Top
Nein, natürlich nicht. Hier werden nur zwei lokale Netze getrennt. Die Firewall ist auf einer VM und verwaltet den Adressbereich der anderen VMs. Die "WAN" ist hier eine lokale Adresse. Das steht doch auch in den Paketen. Wir haben hier NAT zwischen 192.168.X.X und 192.168.Y.X. Letztlich sollen die bestehende physikalischen Clients des Unternehmens auf die neue Version des WWS zugreifen können während die alte auf dem Alten weiter im Echtbetrieb ist.

Natürlich wurde der Traffic vom Clientinterface überwacht, sonst könnte die re-transmission ja nicht aufgezeichnet werden.
Member: StefanKittel
StefanKittel Oct 18, 2021 at 10:05:42 (UTC)
Goto Top
Hallo,
MSSQL kann z.B. dynamische Ports verwenden. Vieleicht macht der Firebird das auch?
Stefna
Member: aqui
aqui Oct 18, 2021 at 10:20:44 (UTC)
Goto Top
Gibt es einen tieferen Sinn warum man auf 2 lokalen Interfaces NAT macht ?? Eigentlich doch völlig unsinnig und eine mögliche Fehlerquelle.
Member: mejfoss
mejfoss Oct 18, 2021 at 11:28:21 (UTC)
Goto Top
Es handelt sich bei der VM um einen VM Klon des aktiven baremetal Servers. Dieser ist mit der Hardware in die Jahre gekommen. Somit haben die Server nur eine Identität(Selber Name, Kennung AD,usw). Um Probleme mit den Clients zu vermeiden (wäre ja problematisch wenn zwei identischen Domänencontroller im Netz funken zu haben) wurde dieser in ein getrenntes Netz verfrachtet. Daher die NAT.
Der alte Server wird dann nachdem die Mitarbeiter auf die neue Version geschult sind vom Netz genommen. lediglich die notwendige Freigabe undd der Firebird Port werden genattet.

Die neuen Clients lösen dann die alten auch physikalisch ab, da diese auf alten win7 Möhren laufen. Daher haben die neuen" erst einmal die NAT-Adresse in der Host und finden den alten erst gar nicht über die Namensauflösung.(Interimslösung)

Im Grunde sollte das alles so funktionieren, das einzige Problem ist irgend ein Programm- oder DB Bestandteil der die lokale IP des Servers hinter der NAT ausliest und diese dann vom Client bei Verbindungsversuchen(siehe Pakete) genutzt wird.
Daher die Frage ob es es hier Firebird spezifische Problem bei NAT gibt.
Member: DerMaddin
DerMaddin Jul 06, 2022 updated at 08:36:21 (UTC)
Goto Top
Moin,

der Thread ist zwar schon etwas älter aber wir haben auch einen "Server" mit FB 2.5 drauf. Bin hierhin nur auch durch Suche nach dem Errorno 10054 gekommen. Ob das ein Problem aktuell ist, keine Ahnung.

Der Server soll, wenn möglich, virtualisiert werden. Die Aussagen von unserem Partner der Software sind quasi nur die weiter gereichten IBE-Aussagen bezüglich Virtualisierung und "Leistungseinbussen von 20-80%". Dieser IBExperts Benchmark ist irgendwie eine unklare Blackbox und die Werte kann ich schlecht mit anderen Systemen vergleichen.

Aktuell läuft FB auf einem HW "Server" mit i7-7700@3.6GHz, 64GB DDR4, 2x Samsung 850 EVO SATA SSD. Auslastung ist eher gegen Null tendierend. fbserver.exe schreibt zwar dauerhaft Daten in die DB aber das sind irgendwas zwischen 40 und 200 KB/s und laut Perfmon kommen da um die 10k IOPS.

Die Datenbank.fdb ist ca 2GB und Datenbank_FILES.fdb 39GB. Anzahl der User aktuell 6.

Ich denke eher nicht, dass eine P2V Migration die Leistung erheblich mindern würde aber ich habe leider bisher keine Erfahrungen mit Firebird.

Was meint ihr dazu?
Member: Vision2015
Vision2015 Jul 06, 2022 at 09:07:38 (UTC)
Goto Top
Moin...
vom welcher Software reden wir den?

du kannst ohne Probleme mit dem FB Server in eine VM gehen!
das FB DB´s im Netzwerk sehr langsam sind, ist kein geheimnis- in der regel schafft ein RDS Host da abhilfe!

Frank
Member: DerMaddin
DerMaddin Jul 06, 2022 at 09:23:56 (UTC)
Goto Top
In meinem Fall ist es eine ERP-Software der Firma Greenware. Nichts komplexes oder umfangreiches.
Member: Vision2015
Vision2015 Jul 06, 2022 at 09:55:01 (UTC)
Goto Top
Moin...

In meinem Fall ist es eine ERP-Software der Firma Greenware. Nichts komplexes oder umfangreiches
nun ja... GaLa Bau face-smile
Die Datenbank.fdb ist ca 2GB und Datenbank_FILES.fdb 39GB. Anzahl der User aktuell 6.
ich habe auch so einen Pflegefall- habs umgestellt auf RDS und Ruhe war... und vor allem schnell face-smile

Frank
Member: user217
user217 Mar 31, 2023 at 09:03:16 (UTC)
Goto Top
Der Fehler liegt auch am hardening der SSL config.
Regkey SCHANNEL löschen oder IISCrypto.exe mit Bestpractices neustarten und erledigt.