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.cnfzu 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_timeoutDer Wert wirkt sich nicht auf Webanwendungsverbindungen aus. Ein niedrigerwait_timeoutist 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_timeoutanpassen Wert, um mit ihren Verbindungspooleinstellungen übereinzustimmen. Der Standardwert8 hours = 28800Sekunden funktioniert gut mit ordnungsgemäß konfigurierten Verbindungspools. -
Konfigurieren Sie das
wait_timeoutals 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.cnfbeizubehalten . Alle bestehenden Verbindungen müssen den alten Wert vonwait_timeouterreichen 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=3600auszugeben 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