140 Stimmen

Wie kann ich alle Prozesse in Mysql "show processlist" beenden?

Denn ich sehe dort eine Menge Prozesse, und die Spalte "Zeit" zeigt für alle große Werte an.

1voto

BohanZhang Punkte 163

Für die Sprache Python, können Sie wie folgt vorgehen

import pymysql

connection = pymysql.connect(host='localhost',
                             user='root',
                             db='mysql',
                             cursorclass=pymysql.cursors.DictCursor)

with connection.cursor() as cursor:
    cursor.execute('SHOW PROCESSLIST')
    for item in cursor.fetchall():
        if item.get('Time') > 200:
            _id = item.get('Id')
            print('kill %s' % item)
            cursor.execute('kill %s', _id)
    connection.close()

1voto

Timon de Groot Punkte 5947

Das Folgende hat bei mir gut funktioniert:

echo "show processlist" | mysql | grep -v ^Id | awk '{print $1}' | xargs -i echo "KILL {}; | mysql"

0voto

Ziaur Rahman Punkte 958

Wenn Sie Laravel verwenden, dann ist dies für Sie:

$query = "SHOW FULL PROCESSLIST";
    $results = DB::select(DB::raw($query));

    foreach($results as $result){
        if($result->Command == "Sleep"){
            $sql="KILL ". $result->Id;
            DB::select(DB::raw($sql));
        }
    }

Natürlich sollten Sie das verwenden use Illuminate\Support\Facades\DB; nach Ihrem Namespace.

0voto

Adam Bodrogi Punkte 81

Kill funktioniert nicht, wenn der laufende Prozess nicht der Ihre ist. Ich habe einige dieser Lösungen zusammengeführt und sie erweitert, um eine (zumindest für mich) einfachere Lösung zu finden.

m=mysql -p $password -h $host -u$user #you can also inline it of course 
for i in `$m -e "show processlist" | awk '/$anySearchString/ {print $1}'`; do $m -e "call mysql.rds_kill($i);"; done

0voto

Meltzer Punkte 117

Ich habe den Befehl flush tables um alle inaktiven Verbindungen zu beenden, die das eigentliche Massenproblem darstellten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X