Log in

View Full Version : Code To Auto Killall Mysqld


Doug E
2006-10-25, 05:09 AM
Im looking for a command that will check my server load and run the command 'killall mysqld' if the load is over a certain average. Should I be looking for cron commands to do this?

Servhot
2006-10-25, 10:30 AM
I would suggest you better check why the mysql load moves that high and find a solution for this or better fix the program which makes the server load :)

cd34
2006-10-25, 12:07 PM
I wouldn't condone doing a kill for that as you're likely to leave tables in a crashed state requiring a repair or at least a check before you start.

However, with that said, you could do something like:


#!/usr/bin/perl

open F,("</proc/loadavg");
($ld,$junk) = split /\./,<F>;
close F;

if ($ld >= 10) {
`whateveryouwanttorun`;
}


If the 1 minute load average is above 10, it will run that command. Put that in cron and you should be set. However, I'll say again, and I agree with servhot, I think its a bad idea to kill the server.

Perhaps run something like

mysqladmin -uroot -ppassword processlist | mail username@domain.com

or turn on the slow query log, or do a show processlist in the mysql command line interface or phpmyadmin.

Better to find the cause than to treat the effect.