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.
quelle
Antworten:
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.
quelle
Am Ende stellte sich heraus, dass dies auf ein allgemeines Netzwerkproblem auf dem Computer zurückzuführen war. Die Lösung wurde gefunden in: Netzwerkleistungsprobleme unter Windows 7
quelle