Hola a todos, esta semana me he visto obligado a usar la herramienta pt-kill de PERCONA (percona toolkit), por la necesidad de destruir sesiones por un fallo en el desarrollo de una aplicación, la cual producía múltiples bloqueos y encolamientos en toda la instancia.
Como la versión de la bbdd es MYSQL 5.0 (es un poco antigua pero no tengo mas remedio de administrarla) no tenia otra opción como hacer mi propio script con la tabla PROCESSLIST:
Select concat ('kill ',ID,';') FROM PROCESSLIST where command = 'Query' and time > 100;
Y si soy sincero es un infierno matar mas de 100 sesiones a través del "show processlist" y una a una.
pt-kill (http://www.percona.com/software/percona-toolkit) es la herramienta perfecta para estas ocasiones.
En resumen pt-kill coge la salida de show processlist y según el criterio de las opciones del comando, se encarga de matar las sesiones (o de solo mostrarla con la opción –print) incluso a intervalos:
Vamos a ver unos ejemplos prácticos:
Matar sesiones que llevan corriendo mas de 60s.
pt-kill --busy-time 60 --kill
Y ahora solo imprime por pantalla, no realiza kill:
pt-kill --busy-time 60 --print
Matar todas las sesiones que se encuentran en estado Sleep y ejecuta de nuevo el proceso cada 10s
pt-kill --match-command Sleep --kill --victims all --interval 10
Os recomiendo que le echéis un vistazo al manual con todas sus opciones:
http://www.percona.com/doc/percona-toolkit/2.2/pt-kill.html
Hasta la proxima!