Skip to content

Shell-Skript zum automatischen Beenden von mysql-Schlafprozessen

Lösung:

Ich habe es gemacht.

kill_sleep.sh-Datei erstellen

mysql -u<user> -p<password> -h<host> -e "select concat('KILL ',id,';')  into outfile '/tmp/sleep_processes.txt' from information_schema.processlist where Command = 'Sleep'"
mysql -u<user> -p<password> -h<host> -e "source /tmp/sleep_processes.txt;"
rm -rf /tmp/sleep_processes.txt

Und setze kill_sleep.sh auf cron job .

Die Antwort von Vishal funktioniert gut, wenn Sie den Befehl auf dem MySQL-Server ausführen, aber es funktioniert nicht, wenn Sie eine Remote-Verbindung zum Server herstellen oder keine Berechtigung zum Ausführen von SOURCE haben oder SELECT ... INTO OUTFILE (zB Amazons RDS). Es ist jedoch möglich, es umzuschreiben, um sich nicht auf diese Funktionen zu verlassen, und dann funktioniert es überall:

mysql -h<host> -u<user> -p -e "SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE Command = 'Sleep'" > sleep.txt
cat sleep.txt | xargs -I% mysql -h<host> -u<user> -p -e "%"

Die Syntax lautet:

KILL thread_id

In deinem Fall:

  mysql > KILL 3057

Um jedoch alle Schlafprozesse zu löschen, kann kein Befehl verwendet werden, Sie müssen die gesamte Prozessliste durchlaufen, nachdem Sie alle Prozesse in der tmp-Tabelle genommen und durchlaufen haben:

select concat('KILL ',id,';') from information_schema.processlist where Command='Sleep';

select concat('KILL ',id,';') from information_schema.processlist where Command='Sleep' into outfile '/tmp/a.txt';

Von hier verwiesen

Click to rate this post!
[Total: 0 Average: 0]



Anderer Beitrag

Scala IsMap$

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.