Ändern Sie das Verbindungs-Timeout in MySQL
- Ändern Sie das Verbindungs-Timeout in MySQL
-
Ändern Sie MySQL
connect_timeout
unter Verwendung des Windows-Betriebssystems -
Ändern Sie MySQL
connect_timeout
unter Linux (Ubuntu 20.04) OS
Heute lernen wir, wie man das Verbindungs-Timeout in MySQL unter Linux (Ubuntu 20.04) und Windows-Betriebssystemen ändert.
Ändern Sie das Verbindungs-Timeout in MySQL
Manchmal verlieren Sie immer wieder die Verbindung zu MySQL Server, weil die Eigenschaft connect_timeout
standardmäßig auf wenige Sekunden eingestellt ist.
Hier sehen wir, wie Sie den Standardwert von connect_timeout
in MySQL unter Linux (Ubuntu 20.04) und Windows-Betriebssystemen ändern.
Wir können entweder die Konfigurationsdatei aktualisieren oder SQL-Abfragen verwenden, um Änderungen in beiden Betriebssystemen vorzunehmen. Lassen Sie uns jeden von ihnen sehen.
Ändern Sie MySQL connect_timeout
unter Verwendung des Windows-Betriebssystems
Zuerst müssen wir die Windows-Befehlszeile öffnen und zum Installationspfad von MySQL Server navigieren. Standardmäßig wird der MySQL Server unter C:\Programme\MySQL\MySQL Server 8.0
installiert.
Navigieren Sie mit dem Befehl cd bin
in der Befehlszeile zum Ordner bin
. Geben Sie außerdem mysql -u root -p password
ein, um sich als root
-Benutzer anzumelden.
Jetzt können wir den Standardwert der Eigenschaft connect_timeout
sehen, indem wir die folgende Abfrage verwenden, bevor wir die notwendigen Aktualisierungen vornehmen.
mysql> SHOW VARIABLES LIKE 'connect_timeout';
Ausgang:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set (0.00 sec)
Wie wir sehen können, wird die Verbindung zum MySQL-Server in 10 Sekunden unterbrochen. Wir können es also auf 28800 Sekunden (8 Stunden) ändern, indem wir die folgenden Befehle in der Windows-Befehlszeile verwenden.
Denken Sie daran, dass das Aktualisieren von interactive_timeout
und wait_timeout
gut ist, da es nützlich wäre, wenn Sie Anwendungen ausführen, die bei der vollständigen Ausführung viel Zeit in Anspruch nehmen.
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
Verwenden Sie den folgenden Befehl, um alle Aktualisierungen zu bestätigen.
mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ('connect_timeout', 'interactive_timeout', 'wait_timeout');
Ausgang:
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| connect_timeout | 28800 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+---------------------+-------+
3 rows in set (0.04 sec)
Hier stellt connect_timeout
die Anzahl der Sekunden dar, die der mysqld
-Server auf ein Connect-Paket wartet, bevor er Bad Handshake
zurückgibt. Das interactive_timeout
zeigt auch die Anzahl der Sekunden an, die der MySQL-Server auf eine Aktivität auf der interaktiven Verbindung wartet, bevor er geschlossen wird.
Wie connect_timeout
und interactive_timeout
zeigt auch wait_timeout
die Anzahl der Sekunden an, die der MySQL-Server auf eine Aktivität auf der Verbindung wartet, bevor er sie schließt.
Wenn Sie eine Anwendung schreiben, können Sie sie folgendermaßen über die Programmiersprache ändern, z. B. Java oder Python.
connection.query("SET GLOBAL connect_timeout=28800")
connection.query("SET GLOBAL interactive_timeout=28800")
connection.query("SET GLOBAL wait_timeout=28800")
Eine andere Möglichkeit besteht darin, die Konfigurationsdatei zu aktualisieren, indem Sie die Datei my.ini
im Pfad C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
öffnen (wenn Sie den MySQL-Server am Standardspeicherort installiert haben). Suchen Sie dann nach dem Abschnitt [mysqld]
und schreiben Sie.
[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800
Starten Sie den MySQL-Server neu und genießen Sie die Updates.
Ändern Sie MySQL connect_timeout
unter Linux (Ubuntu 20.04) OS
Öffnen Sie die Ubuntu-Shell und melden Sie sich mit sudo su
als Superuser an. Melden Sie sich dann mit der folgenden Abfrage beim MySQL-Server an.
$ mysql -u root -p password
Sobald wir drin sind, überprüfen Sie den Standardwert von connect_timeout
, der 10 Sekunden beträgt, wie wir unten sehen können.
mysql> SHOW VARIABLES LIKE 'connect_timeout';
Ausgang:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set (0.00 sec)
Führen Sie nun die folgenden Abfragen aus, um die Werte von connect_timeout
, interactive_timout
und wait_timeout
zu aktualisieren. Wie bereits erwähnt, aktualisieren wir diese drei, um Anwendungen auszuführen, deren vollständige Ausführung viel Zeit in Anspruch nimmt.
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
Ausgang:
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| connect_timeout | 28800 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+---------------------+-------+
3 rows in set (0.13 sec)
Die andere Möglichkeit besteht darin, die Konfigurationsdatei zu aktualisieren. Angenommen, wir erwarten die 28800 Sekunden als Wert von connect_timeout
, interactive_timeout
und wait_timeout
.
Dazu müssen wir die Konfigurationsdatei bearbeiten, die sich in diesem Pfad befindet, /etc/mysql/mysql.conf.d/mysqld.cnf
. Wir verwenden den vim
-Editor; Sie können diese Datei mit einem beliebigen Editor bearbeiten.
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
Suchen Sie nach dem Abschnitt [mysqld]
und fügen Sie connect_timeout
, interactive_timeout
und wait_timeout
wie unten angegeben hinzu.
[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800
Speichern und beenden Sie die Datei. Starten Sie den MySQL-Server mit systemctl restart mysql
neu.
Verwenden Sie die folgende Abfrage, um sicherzustellen, dass alles wie erwartet geändert wurde.
mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ('connect_timeout', 'interactive_timeout', 'wait_timeout');
Ausgang:
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| connect_timeout | 28800 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+---------------------+-------+
3 rows in set (0.90 sec)