Kill long running MySQL processes

It’s all too common for me to come across a box that is hopelessly overloaded with Apache requests and MySQL queries. Sometimes, it takes some brute force to keep the whole box from going under. When all else fails, I use the following one-liner to kill off all of those queries that have been running for too long.

mysql -e 'show processlist\G' |\
egrep -b5 'Time: [0-9]{2,}' |\
grep 'Id:' |\
cut -d':' -f2 |\
sed 's/^ //' |\
while read id
do
    mysql -e "kill $id;"
done

This goes with the assumption that you’re MySQL authentication credentials are in ~/.my.cnf. You aren’t running this as root with no root password set, are you?

Leave a Reply