Heim  >  Artikel  >  Datenbank  >  Detaillierte Analyse von MySQL und dem damit verbundenen Timeout

Detaillierte Analyse von MySQL und dem damit verbundenen Timeout

小云云
小云云Original
2017-12-22 13:27:451726Durchsuche

Beim Abfragen der MySQL-Bibliothek wird die Sitzung immer dann unterbrochen, wenn die Datenmenge relativ groß ist. Zuerst dachte ich, es handele sich um ein Timeout-Problem im Zusammenhang mit MySQL und der Verbindung, aber es stellte sich heraus, dass es die Ursache für die Netzwerkinstabilität war. In diesem Artikel werden hauptsächlich detaillierte Informationen zu MySQL und verbindungsbezogenen Zeitüberschreitungen vorgestellt. Freunde, die sie benötigen, können darauf zurückgreifen.

Im Folgenden wird das Zeitlimit im Zusammenhang mit der Verbindung zusammengefasst

Slave-Net-Timeout

Die Anzahl der Sekunden, die gewartet werden muss für weitere Daten vom Master, bevor der Slave die Verbindung als unterbrochen ansieht, 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 Die Anzahl der Wiederverbindungsversuche wird durch die Option --master-retry-count begrenzt. Der Standardwert beträgt 3600 Sekunden (eine Stunde).
Wenn der Slave denkt, dass es ein Problem mit der Verbindung zum Master gibt, wartet er auf N Sekunden und trennt dann die Verbindung, Master erneut verbinden

net_read_timeout:

Die Anzahl der Sekunden, die auf weitere Daten von einer Verbindung gewartet werden soll, bevor der Lesevorgang abgebrochen wird liest vom Client, net_read_timeout ist der Timeout-Wert, der den Zeitpunkt des Abbruchs steuert.
Die Anzahl der Sekunden, die auf den Erhalt von Daten von einer Verbindung gewartet werden müssen, bevor der Lesevorgang beendet wird, wenn der Dienst Daten vom Client liest. net_read_timeout steuert, wann der Timeout erfolgt .

net_write_timeout:

Die Anzahl der Sekunden, die darauf gewartet wird, dass ein Block in eine Verbindung geschrieben wird, bevor der Schreibvorgang abgebrochen wird. Wenn der Server ist Beim Schreiben auf den Client ist net_write_timeout der Timeout-Wert, der steuert, wann der Abbruch erfolgen soll.
Wie viele Sekunden muss gewartet werden, um den Block in die Verbindung zu schreiben, bevor der Schreibvorgang beendet wird; wenn der Dienst Daten an den Client schreibt, steuert net_write_timeout, wann eine Zeitüberschreitung erfolgen soll

wait_timeout

Die Anzahl der Sekunden, die der Server auf Aktivität auf einer nicht interaktiven Verbindung wartet, bevor er diese schließt 🎜>interactive_timeout:

Die Anzahl der Sekunden, die der Server auf Aktivität auf einer wartet interaktive Verbindung, bevor sie geschlossen wird.Eine Verbindung ohne interaktiven Status, bis sie vom Server erzwungen wird. Die Anzahl der Sekunden, die der mysqld-Server auf ein Verbindungspaket wartet, bevor er mit Bad Handshake antwortet.

Wartezeit auf eine Verbindungsantwort

connect_timeout: Funktion während der Phase des Verbindungsaufbaus (Authentifizierung)

interactive_timeout und wait_timeout : Arbeit während der Verbindungsleerlaufphase (Ruhezustand)
net_read_timeout und net_write_timeout: Arbeit während der Verbindungsbelegungsphase (Abfrage).


Der Erhalt einer MySQL-Verbindung ist das Ergebnis mehrerer Handshakes. Zusätzlich zur übereinstimmenden Überprüfung von Benutzername und Passwort gibt es auch eine IP->HOST->DNS->IP-Überprüfung Schritt ist möglich. Der Thread ist aufgrund von Netzwerkproblemen blockiert. Um zu verhindern, dass Threads unnötiges Warten auf die Überprüfung verschwenden, werden Verbindungsanforderungen, die connect_timeout überschreiten, abgelehnt.

Auch wenn kein Netzwerkproblem vorliegt, darf der Client die Verbindung nicht ständig belegen. Bei Clients, die länger als „wait_timeout“ (oder „interactive_timeout“, abhängig vom Flag „client_interactive“) im Ruhezustand bleiben, trennt MySQL aktiv die Verbindung.

Auch wenn sich die Verbindung nicht im Ruhezustand befindet, das heißt, der Client ist mit der Berechnung oder Speicherung von Daten beschäftigt, entscheidet sich MySQL dafür, bedingt zu warten. Während des Verteilungsprozesses von Datenpaketen kann es sein, dass der Client zu spät antwortet (Datenpakete werden zu langsam gesendet, empfangen oder verarbeitet). Um sicherzustellen, dass die Verbindung nicht durch endloses Warten verschwendet wird, entscheidet sich MySQL auch dafür, die Verbindung bedingt aktiv zu trennen (net_read_timeout und net_write_timeout).



Verwandte Empfehlungen:


Einzelner Thread von setTimeout in JavaScript


Erklärung von setTimeout, um die Ausführung der js-Funktion zu sehen Verarbeiten


setTimeout()-Funktion in js

Das obige ist der detaillierte Inhalt vonDetaillierte Analyse von MySQL und dem damit verbundenen Timeout. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn