Einführung
Unnötige MySQL-Prozesse können Leistungsprobleme auf Ihrem System verursachen. Im Laufe der Zeit häufen sich aktive Threads und bringen Ihren Server zum Stillstand, wodurch Benutzer daran gehindert werden, auf Tabellen zuzugreifen und Anfragen auszuführen.
Wenn die Ressourcennutzung extrem hoch ist, müssen Sie möglicherweise MySQL-Prozesse beenden. Diese Anleitung zeigt Ihnen, wie Sie MySQL-Prozesse identifizieren und einen Prozess beenden.
Voraussetzungen
- Zugriff auf ein Befehlszeilen-/Terminalfenster
- MySQL oder MariaDB installiert
- Benutzer mit sudo oder root Privilegien
So finden Sie die Liste der MySQL-Prozesse
Bevor Sie einen Prozess finden und beenden können, müssen Sie entweder auf einen lokalen oder entfernten MySQL-Server zugreifen. Um sich als root bei Ihrem lokalen MySQL-Konto anzumelden, öffnen Sie das Terminal und geben Sie ein:
mysql -u root -p
Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden. Wenn die MySQL-Shell geladen wird, zeigt die Eingabeaufforderung mysql>
an .
Um einen Prozess zum Beenden oder Beenden zu finden, laden Sie die Liste mit allen aktiven Sitzungen.
Verwenden Sie in der MySQL-Shell diese Abfrage:
SHOW PROCESSLIST;
Die Ausgabe zeigt die folgenden Informationen an:
Möglicherweise haben Sie weitere Einträge in Ihrer Liste. Notieren Sie sich die Id
des Prozesses, den Sie beenden möchten. Die Time
Spalte hilft Ihnen, die am längsten laufenden Prozesse zu bestimmen. Das sind normalerweise diejenigen, die Sie zuerst beenden möchten.
Wie man den MySQL-Prozess beendet
Um eine MySQL-Sitzung aus der Liste zu beenden, verwenden Sie KILL
Abfrage, gefolgt von der Thread-Id
Sie haben es vorhin bemerkt.
KILL 14;
Die Shell zeigt den Abfragestatus und die Anzahl der betroffenen Zeilen an:„Abfrage OK, 0 Zeilen betroffen (0,06 Sek.) .” Diese Abfrage beendet die Verbindung zur Datenbank, einschließlich aller mit der Verbindung verbundenen Operationen.
Denken Sie daran, dass ein Benutzer die entsprechenden Berechtigungen haben muss, um einen Prozess beenden zu können.
Wie man alle MySQL-Prozesse für einen bestimmten Benutzer beendet
MySQL hat keinen eindeutigen Befehl zum Beenden aller Prozesse.
Um alle Prozesse für einen bestimmten Benutzer zu beenden, verwenden Sie CONCAT
um eine Datei mit der Liste der Threads und Anweisungen zu erstellen. In unserem Fall haben wir root eingegeben als Benutzer. Um einen anderen Benutzer anzugeben, ersetzen Sie root mit dem gewünschten Benutzernamen.
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' INTO OUTFILE '/tmp/process_list.txt';
Diese Abfrage hat eine Datei namens process_list.txt erstellt . Sie können den Namen nach Ihren Wünschen bearbeiten. Öffnen Sie die Datei und überprüfen Sie, ob dies die Prozesse sind, die Sie beenden möchten. Wenn Sie fertig sind, geben Sie Folgendes ein:
SOURCE /tmp/process_list.txt;
Sie können der Abfrage Bedingungen hinzufügen, um die Liste der Prozesse in der Ausgabedatei einzugrenzen. Fügen Sie beispielsweise time > 1000
hinzu an den Befehl, nur die Prozesse mit einem Zeitwert über 1000 einzubeziehen.
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' and time>1000 INTO OUTFILE '/tmp/process_list.txt';