Warum läuft eine MySQL-Abfrage jetzt nach 60 Sekunden ab, obwohl sie zuvor erfolgreich ausgeführt wurde?

Mary-Kate Olsen
Freigeben: 2024-10-18 22:12:03
Original
571 Leute haben es durchsucht

Why does a MySQL query now time out after 60 seconds when it used to execute successfully?

MySQL Server 60-Sekunden-Timeout-Problem

In diesem Artikel wird ein Problem untersucht, bei dem eine MySQL-Abfrage, die zuvor erfolgreich war, nun nach 60 Sekunden abläuft und zeigt die Fehlermeldung „MySQL-Server ist nicht mehr verfügbar“ an. Obwohl die Abfrage selbst langsam ist, war sie immer Teil einer nächtlichen Arbeit und stellte bis vor kurzem nie ein Problem dar.

Problemsymptome

  • Die Abfrage bleibt genau 60 Sekunden lang stehen, bevor eine Zeitüberschreitung auftritt.
  • Das Problem ist reproduzierbar, indem die Anweisung „SELECT SLEEP(120);“ ausgeführt wird. von PHP.
  • Die gleiche Anweisung wird erfolgreich ausgeführt, wenn sie von einem MySQL-Client ausgeführt wird.
  • Das Anpassen der Variablen „wait_timeout“ auf 28800 Sekunden löst das Problem nicht.

Mögliche Ursachen

  • Begrenzte Ressourcen wie CPU oder Arbeitsspeicher sind keine wahrscheinliche Ursache, da das Problem immer nach genau 60 Sekunden auftritt.
  • A Mögliche Ursache könnte eher eine falsche Einstellung als eine Ressourcenbeschränkung sein.

Fehlerbehebung

Es wurde festgestellt, dass die Standard-PHP-Einstellung „mysql.connect_timeout“ die Wurzel ist des Problems. Diese Einstellung steuert nicht nur das Verbindungszeitlimit, sondern auch die Wartezeit auf die erste Antwort des Servers.

Lösung

Um die Wartezeit zu erhöhen, kann die folgende PHP-Konfiguration erfolgen verwendet:

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300); 
Nach dem Login kopieren

Diese Änderung erhöht die Wartezeit auf den angegebenen Wert, sodass die Abfrage ohne Zeitüberschreitung abgeschlossen werden kann.

Das obige ist der detaillierte Inhalt vonWarum läuft eine MySQL-Abfrage jetzt nach 60 Sekunden ab, obwohl sie zuvor erfolgreich ausgeführt wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage