Die Antwort scheint darin zu bestehen, die folgenden Einträge in my.cnf unter [mysqld] hinzuzufügen:
wait_timeout=60
interactive_timeout=60
Ich habe es hier gefunden (ganz unten):http://community.livejournal.com/mysql/82879.html
Die Standardwartezeit zum Beenden einer veralteten Verbindung beträgt 22800 Sekunden. Zur Überprüfung:
mysql> show variables like 'wait_%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 60 |
+---------------+-------+
BEARBEITEN:Ich habe vergessen zu erwähnen, dass ich auch Folgendes zu meiner /etc/sysctl.conf hinzugefügt habe:
net.ipv4.tcp_fin_timeout = 15
Dies soll dazu beitragen, den Schwellenwert zu senken, den das Betriebssystem wartet, bevor Verbindungsressourcen wiederverwendet werden.
BEARBEITEN 2:/etc/init.d/mysql reload lädt Ihre my.cnf nicht wirklich neu (siehe Link unten)
Möglicherweise sind die Verbindungspools falsch konfiguriert, um zu viele Verbindungen aufrechtzuerhalten, und sie halten zu viele Leerlaufprozesse aufrecht.
Abgesehen davon kann ich mir nur vorstellen, dass ein Codestück eine Ergebnismenge festhält, aber das scheint weniger wahrscheinlich. Um zu erkennen, ob eine langsame Abfrage das Zeitlimit überschreitet, können Sie MySQL auch so einstellen, dass es in ein Protokoll für langsame Abfragen in der conf-Datei schreibt, und es schreibt dann alle Abfragen, die länger als X Sekunden dauern, der Standardwert ist 10 Sekunden.