MySql-Clients-Verbindungstimeout zufällig

MySql-Clients-Verbindungstimeout zufällig

Ich habe 100 PC-Clients, die über LAN eine Verbindung zu MySQL herstellen.

Sie führen INSERT-Abfragen ohne bestimmten Zeitraum aus. Statistisch gesehen versuchen nicht mehr als 10 PCs gleichzeitig, INSERT-Abfragen auszuführen. Dies ist keine konzeptbedingte Einschränkung, sondern nur, dass die Ausführung der Abfragen von der Benutzeraktivität jedes einzelnen PCs abhängt.

Jeder Client stellt jedes Mal eine Verbindung her und trennt die Verbindung, wenn er die INSERT-Abfrage (Verbinden – Einfügen – Trennen) ausführen muss.

Mehrere Monate lang hat alles gut funktioniert, aber vor ein paar Tagen begannen die Verbindungsprobleme mit dem Client.

Etwa zweimal am Tag können Clients für 5-10 Minuten keine Verbindung herstellen. Sie erhalten Timeout-Fehler. Alle PC-Clients können während dieser Zeit keine Verbindung herstellen. Keiner von ihnen kann eine Verbindung herstellen.

Die Uhrzeit des Ausfalls ist zufällig. Manchmal geschieht dies um 09:00 Uhr, manchmal um 13:00 Uhr usw. Die Aktivität jedes Benutzers ist ziemlich regelmäßig, sodass es von einem Tag zum anderen keine großen Unterschiede gibt. Ich meine, die Uhrzeit des Tages scheint keine Rolle zu spielen.

Wenn ich mir die Serverseite anschaue, sehe ich keine Fehler in den MySQL-Protokollen, keine Dienstabstürze, keine Serverneustarts. Ich habe nur das Fehlerprotokoll aktiviert (kein Abfrageprotokoll, kein Slow-Query-Protokoll).

Dann habe ich nach einem Netzwerkproblem gesucht, aber die Tracerts vom PC zum Server und vom Server zum PC waren richtig.

Ich habe eine Netzwerkaufzeichnung auf dem Server gemacht (mit Wireshark), um zu sehen, ob ich dort den Fehler finden kann.

Während des Fehlerzeitraums (diese 5-10 Minuten) sehe ich Verbindungen von PC-Clients, die in der „Begrüßungs“-Nachricht hängen bleiben. Der Client-PC sendet als Antwort keine „Anmelde“-Anforderung.

Antwort1

Beim Durchsuchen der Netzwerküberwachung bin ich auf einige Probleme bei der Namensauflösung gestoßen.

Ich verwende die Version 5.1.41 der MySQL Community Edition. Ich weiß nicht, ob dies auch für aktuellere Versionen gilt, aber in dieser Version ist die Funktion „Namensauflösung“ standardmäßig aktiviert.

Wenn die Namensauflösung aktiviert ist, versucht MySQL bei jedem Start einer Netzwerkverbindung, den PC-Namen des Clients anhand seiner IP aufzulösen.

Wenn diese Namensauflösung aus irgendeinem Grund fehlschlägt oder verzögert wird, kann dies zu Verbindungsproblemen führen.

Wenn die Namensauflösung unterbrochen ist, kommt es bei jedem erneuten Versuch eines Client-PCs zu mehr Verbindungsfehlern und Verzögerungen und am Ende ist keine Netzwerkverbindung möglich.

Die Lösung besteht darin, die Namensauflösung zu deaktivieren. Diese Funktion ist wichtig, wenn Sie Berechtigungen für einige MySQL-Benutzer definiert haben, die auf dem Hostnamen des Clients basieren. Da wir jedoch keine auf dem Hostnamen des Clients basierenden Berechtigungen haben (stattdessen verwenden wir die IP-Adresse), können wir die Funktion „Namensauflösung“ bedenkenlos deaktivieren.

Dies ist der Link, der das erklärt und mir die richtige Richtung weist und zeigt, wonach ich in Netzwerkerfassungen suchen muss:

https://bugs.mysql.com/bug.php?id=49877

verwandte Informationen