Wenn eine Anwendung eine ungenutzte Verbindung nicht schließen kann, wird ein niedriger wait_timeout
Der Wert hilft Ihnen, die zulässige Anzahl von Verbindungen nicht zu überschreiten. Verwenden Sie die folgenden Anweisungen, um dieses Vakuum festzulegen:
-
Melden Sie sich mit Secure Shell® (SSH) bei Ihrem Server an.
-
Verwenden Sie den sudo-Befehl, um
my.cnf
zu bearbeiten , die MySQL®-Konfigurationsdatei.$ sudo vi /etc/my.cnf
-
Suchen Sie die Timeout-Konfiguration und nehmen Sie die Anpassungen vor, die zu Ihrem Server passen.
wait_timeout = 28800 interactive_timeout = 28800
-
Das
interactive_timeout
Der Wert wirkt sich nicht auf Webanwendungsverbindungen aus. Ein niedrigerwait_timeout
ist eine normale Best Practice. -
Zustandslose PHP-Umgebungen funktionieren gut mit einem Timeout von 60 Sekunden oder weniger. Anwendungen, die einen Verbindungspool verwenden (Java®, .NET® usw.), müssen
wait_timeout
anpassen Wert, um mit ihren Verbindungspooleinstellungen übereinzustimmen. Der Standardwert8 hours = 28800
Sekunden funktioniert gut mit ordnungsgemäß konfigurierten Verbindungspools. -
Konfigurieren Sie das
wait_timeout
als Sicherheitsüberprüfung etwas länger sein als die erwartete Verbindungslebensdauer des Anwendungsverbindungspools. Erwägen Sie, den Wert online zu ändern, da dies keinen MySQL-Neustart erfordert und Sie ihn anpassen können, während der Server läuft, ohne dass es zu Ausfallzeiten kommt. Ändern Sie den Wert inset global wait_timeout=60
, und alle neu erstellten Sitzungen erben es. Achten Sie darauf, die Einstellung inmy.cnf
beizubehalten . Alle bestehenden Verbindungen müssen den alten Wert vonwait_timeout
erreichen wenn die Anwendung die Verbindung abgebrochen hat. Wenn Sie Reporting-Jobs haben, die während einer Transaktion länger lokal verarbeitet werden, sollten Sie erwägen, bei solchen Jobsset session wait_timeout=3600
auszugeben beim Verbinden.
-
-
Speichern Sie die Änderungen und beenden Sie den Editor.
-
Verwenden Sie den folgenden Befehl, um MySQL neu zu starten und die Änderungen zu übernehmen, falls erforderlich:
$ sudo /etc/init.d/mysql restart