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). 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. 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. Wartezeit Die Anzahl der Sekunden, die der Server auf Aktivität bei einer nicht interaktiven Verbindung wartet, bevor er sie schließt. interaktives_Timeout: Die Anzahl der Sekunden, die der Server auf Aktivität bei einer interaktiven Verbindung wartet, bevor er sie schließt. 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) 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:
|
<<: 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
Vor Kurzem hat das Unternehmen die Anforderung ge...
Die Installation von MySQL 5.7 auf Ubuntu 1804 wi...
Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort ve...
Stellungnahme : In diesem Artikel erfahren Sie, w...
Das Betriebssystem Win10 MySQL ist die 64-Bit-ZIP...
1. Verbindung zu MySQL herstellen Format: mysql -...
Inhaltsverzeichnis Beim Einrichten einer MySQL-Ma...
<br />Als sich das Denken in Ost und West sp...
Der wichtigste Schritt bei der Verpacken einer Id...
Als ich das erste Mal anfing, fand ich viele Fehl...
wangEditor ist ein webbasierter Rich-Text-Editor,...
Inhaltsverzeichnis linux 1. Was ist SWAP 2. Was p...
Um die Lebensdauer der Festplatte zum Speichern v...
Vorwort: Die verteilte Master-Slave-Architektur v...
Navigationsleiste erstellen: Technische Vorausset...