Verbindungsfehler zur MySQL-Datenbank


9

Meine Anwendung muss häufig Verbindungen zu einer MySQL-Datenbank auf einem anderen Computer herstellen. Bei der Verbindung treten jedoch häufig Fehler auf. Ich kann mich normalerweise irgendwann aber nach vielen Wiederholungsversuchen verbinden. Die Fehlermeldung, die ich erhalte, lautet:

Mysql.mysql(): Couldn't connect to SQL-server: Lost connection to MySQL server at 'reading authorization packet', system error: 2

Ich habe die Informationen hier gelesen: http://dev.mysql.com/doc/refman/5.0/en/error-lost-connection.html und auch die Kommentare zum Fehler http://bugs.mysql.com/bug .php? id = 28359 .

Es gibt eine ganze Reihe von abgebrochenen Verbindungen, wie Sie sehen können:

mysql> SHOW GLOBAL STATUS LIKE 'Aborted_connects';
+ ------------------ + ------- +
| Variablenname | Wert |
+ ------------------ + ------- +
| Abgebrochene_Verbindungen | 2540 |
+ ------------------ + ------- +

Ich habe das Timeout von 5 auf 15 Sekunden erhöht:

mysql> zeige Variablen wie 'connect_timeout';
+ ----------------- + ------- +
| Variablenname | Wert |
+ ----------------- + ------- +
| connect_timeout | 15 |
+ ----------------- + ------- +

aber das hat nicht geholfen. Irgendwelche Vorschläge, wie man das debuggt? Es macht die Datenbankinteraktion schrecklich langsam, wenn es im Durchschnitt fünfmal versuchen muss, eine Verbindung herzustellen, bevor es funktioniert.

Ich habe noch nicht versucht, die Verbindung für die gesamte Lebensdauer der Anwendung offen zu halten. Wäre das besser? Wie verhindere ich, dass die Verbindung geschlossen wird?

Wenn es dem Computer bei den Problemen hilft, ist Windows 7 32-Bit, während der MySQL-Server unter Debian Linux ist.


Ich weiß, dass dies nur ein Verband ist, aber in der URL des Fehlerberichts heißt es: "Ich habe das Problem umgangen, indem ich die globale Variable connect_timeout auf 30 Sekunden erhöht habe." Möchten Sie einen höheren Wert ausprobieren?
JoseK

1
Kalter Trost, aber das ist eine gut geschriebene Frage. Hervorragende Befolgung des Artikels von Eric S. Raymond ... +1 an Sie und viel Glück.
GWaldo

@ JoseK natürlich kann ich versuchen, aber ich bezweifle, dass es viel Unterschied machen wird, da ich keine Verbesserung sah, indem ich von 5 auf 15 stieg.
Zitrax

Ist dies eine der Variablen, die keine Begrenzung setzt, wenn der Wert auf 0 gesetzt ist?
pjmorse

1
Sind Sie sicher, dass es keine Konnektivitätsprobleme zwischen den Computern gibt, möglicherweise ein Netzwerkproblem?
Warner

Antworten:


2

Wenn Sie sich alle Fehlerdetails und Berichte ansehen, von denen ich vermute, dass hier ein netzwerk- oder clientseitiges Problem vorliegt. Etwas beschädigt die MySQL-Daten oder fügt ihnen zu viel Latenz hinzu.

Führen Sie in einem übersichtlichen Netzwerk eine Wireshark-Verfolgung durch und überprüfen Sie, wie die Konversation aussieht. Stellen Sie sicher, dass nirgendwo eine Verkehrsformung stattfindet. Scheint nur ein 64-Bit-Problem zu sein. Überprüfen Sie daher einen 32-Bit-Build, um sicherzustellen, dass es sich um dasselbe Problem handelt. Überprüfen Sie eine Windows XP-Box - M $ hat ein paar funky Sachen mit dem Netzwerk-Stack unter Vista gemacht, was ihn zum Kotzen gebracht hat - ein bisschen Zeit! Wir haben keine Probleme mit dem Netzwerk mit Vista und Win7!

Wenn Sie eine Wireshark-Spur verwalten, fügen Sie sie bitte ein und setzen Sie den Link, da wir alle einen Blick darauf haben möchten, denke ich.


Was meinst du mit "scheint ein 64-Bit-Problem zu sein"? Dies ist eine 32-Bit-Installation. Und sorry, ich habe Vista erwähnt, das ist Win7, Beschreibung korrigiert.
Zitrax

Ich bin nicht sehr vertraut mit dem Debuggen mit Wireshark. Aber ein paar Dinge sehen für mich seltsam aus, es gibt ein paar neu markierte RST-Pakete und TCP-Retransimission, und die Zeit einiger Pakete ist negativ, wie -257,3 Sekunden.
Zitrax

Können Sie überhaupt einen anderen Schalter verwenden und bitte erneut testen? anders machen wenn du eins hast? Wenn Sie Pastebin oder Zip und die Wireshark Dump verfügbar machen könnten, könnten wir einen Blick darauf werfen ...
Khushil

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.