Ändern Sie das Verbindungs-Timeout in MySQL

Mehvish Ashiq 20 Juni 2023
  1. Ändern Sie das Verbindungs-Timeout in MySQL
  2. Ändern Sie MySQL connect_timeout unter Verwendung des Windows-Betriebssystems
  3. Ändern Sie MySQL connect_timeout unter Linux (Ubuntu 20.04) OS
Ändern Sie das Verbindungs-Timeout in MySQL

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)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Verwandter Artikel - MySQL Connection