Detaillierte Zusammenfassung von MySQL und verbindungsbezogenen Timeouts

Detaillierte Zusammenfassung von MySQL und verbindungsbezogenen Timeouts

MySQL und verbindungsbezogene Timeouts

Vorwort:

Heute hat mich ein Kollege gefragt, warum bei der Abfrage einer MySQL-Datenbank und großen Datenmengen immer die Sitzung getrennt wird. Zuerst dachte ich, es handele sich um ein Timeout-Problem bei der MySQL-Verbindung, aber es stellte sich heraus, dass es an einer Instabilität des Netzwerks lag.

Im Folgenden sind die Timeouts für Verbindungen zusammengefasst

Slave-Netz-Timeout

Die Anzahl der Sekunden, die auf weitere Daten vom Master gewartet werden soll, bevor der Slave die Verbindung als unterbrochen betrachtet, den Lesevorgang abbricht und versucht, die Verbindung wiederherzustellen. Der erste Wiederholungsversuch erfolgt unmittelbar nach dem Timeout. Das Intervall zwischen den Wiederholungsversuchen wird durch die Option MASTER_CONNECT_RETRY für die Anweisung CHANGE MASTER TO gesteuert, und die Anzahl der Wiederverbindungsversuche wird durch die Option --master-retry-count begrenzt. Der Standardwert beträgt 3600 Sekunden (eine Stunde).
Wenn der Slave glaubt, dass ein Problem mit der Verbindung zum Master besteht, wartet er N Sekunden, trennt dann die Verbindung und stellt die Verbindung zum Master wieder her.

net_read_timeout:

Die Anzahl der Sekunden, die auf weitere Daten von einer Verbindung gewartet werden soll, bevor der Lesevorgang abgebrochen wird. Wenn der Server vom Client liest, ist net_read_timeout der Timeout-Wert, der steuert, wann abgebrochen wird.
Die Anzahl der Sekunden, die auf Daten von einer Verbindung gewartet werden soll, bevor der Lesevorgang beendet wird. net_read_timeout steuert, wann beim Lesen von Daten von einem Client eine Zeitüberschreitung beim Server auftritt.

net_write_timeout:

Die Anzahl der Sekunden, die gewartet werden soll, bis ein Block in eine Verbindung geschrieben wurde, bevor der Schreibvorgang abgebrochen wird. Wenn der Server an den Client schreibt, ist net_write_timeout der Timeout-Wert, der steuert, wann der Schreibvorgang abgebrochen wird.
Wie viele Sekunden mit dem Schreiben eines Blocks in die Verbindung gewartet werden soll, bevor der Schreibvorgang beendet wird; wenn der Dienst Daten in den Client schreibt, steuert „net_write_timeout“, wann das Timeout erfolgt.

Wartezeit

Die Anzahl der Sekunden, die der Server auf Aktivität bei einer nicht interaktiven Verbindung wartet, bevor er sie schließt.
Die Zeit, die benötigt wird, um eine Verbindung ohne Interaktion vom Server zu schließen.

interaktives_Timeout:

Die Anzahl der Sekunden, die der Server auf Aktivität bei einer interaktiven Verbindung wartet, bevor er sie schließt.
Die Zeit, die benötigt wird, um eine Verbindung ohne Interaktion vom Server zu schließen.

Verbindungstimeout

Die Anzahl der Sekunden, die der mysqld-Server auf ein Verbindungspaket wartet, bevor er mit „Bad handshake“ antwortet. Der Standardwert beträgt 10 Sekunden.

Die Zeit, die auf eine Verbindungsantwort gewartet wird

connect_timeout: wird während der Verbindungsaufbauphase (Authentifizierung) wirksam

interactive_timeout und wait_timeout: arbeiten während der Verbindungsleerlaufphase (Ruhezustand)
net_read_timeout und net_write_timeout: werden während der aktiven Verbindungsphase (Abfrage) wirksam.

Der Aufbau einer MySQL-Verbindung ist das Ergebnis mehrerer Handshakes. Neben der Übereinstimmungsüberprüfung von Benutzername und Passwort gibt es auch eine IP->HOST->DNS->IP-Überprüfung. Jeder Schritt kann aufgrund von Netzwerkproblemen zu einer Blockierung des Threads führen. Um zu verhindern, dass Threads durch unnötiges Warten auf Überprüfungen verschwendet werden, werden Verbindungsanforderungen, die connect_timeout überschreiten, abgelehnt.

Auch wenn keine Netzwerkprobleme vorliegen, können Sie nicht zulassen, dass der Client die Verbindung dauerhaft belegt. MySQL trennt aktiv die Verbindung zu Clients, die länger als wait_timeout (oder interactive_timeout, abhängig vom client_interactive-Flag) im Ruhezustand verbleiben.

Auch wenn sich die Verbindung nicht im Ruhezustand befindet, das heißt, wenn der Client mit der Berechnung oder Speicherung von Daten beschäftigt ist, entscheidet sich MySQL für eine bedingte Wartezeit. Während der Datenpaketverteilung hat der Client möglicherweise keine Zeit zu antworten (das Senden, Empfangen oder Verarbeiten des Datenpakets ist zu langsam). Um sicherzustellen, dass die Verbindung nicht durch endloses Warten verschwendet wird, trennt MySQL die Verbindung auch bedingt aktiv (net_read_timeout und net_write_timeout).

siehe:

http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html

Oben finden Sie eine detaillierte Zusammenfassung von MySQL und verbindungsbezogenen Timeouts. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht oder diskutieren Sie in der Community. Vielen Dank fürs Lesen und ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung dieser Site!

Das könnte Sie auch interessieren:
  • Unterschied zwischen interactive_timeout und wait_timeout in MySQL
  • C3P0-Verbindungspool + MySQL-Konfiguration und Lösung des Wait_Timeout-Problems
  • Ein Clusterproblem, das durch den MySQL-Parameter slave_net_timeout gelöst wird

<<:  So verwenden Sie die Form-Komponente von Antd in React, um Formularfunktionen zu implementieren

>>:  Erläuterung zur Verwendung und Änderung des Standard-Programmveröffentlichungspfads von Tomcat

Artikel empfehlen

Vue implementiert Multi-Grid-Eingabefeld auf mobilem Endgerät

Vor Kurzem hat das Unternehmen die Anforderung ge...

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort vergessen?

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort ve...

Bringen Sie Ihnen bei, wie Sie coole Barcode-Effekte erstellen

Stellungnahme : In diesem Artikel erfahren Sie, w...

Installieren Sie MySQL 5.7.17 im Win10-System

Das Betriebssystem Win10 MySQL ist die 64-Bit-ZIP...

So erstellen Sie eine MySQL-Datenbank (de1) mit Befehlen

1. Verbindung zu MySQL herstellen Format: mysql -...

Einführung in die Verwendung des MySQL pt-slave-restart-Tools

Inhaltsverzeichnis Beim Einrichten einer MySQL-Ma...

Designtheorie: Menschenorientiertes Designkonzept

<br />Als sich das Denken in Ost und West sp...

Probleme bei der Verwendung der Rich-Text-Bearbeitung mit Wangeditor in Vue

wangEditor ist ein webbasierter Rich-Text-Editor,...

Linux-Swap-Partition (ausführliche Erklärung)

Inhaltsverzeichnis linux 1. Was ist SWAP 2. Was p...

Transplantieren des Befehls mkfs.vfat in Busybox unter Linux

Um die Lebensdauer der Festplatte zum Speichern v...

HTML+CSS zum Erstellen eines Menüs in der oberen Navigationsleiste

Navigationsleiste erstellen: Technische Vorausset...