Autor YouCode - http://www.youcode.com.ar/mysql/kill-sleeping-connections-294
Matar las conexiones en sleep en MySql
Veremos como matar la conexiones que estan en sleep en MySql.Para realizar esta tarea, debemos hacer el Procedimiento Almacenado y el Evento (Schedule) sobre la base de datos mysql.
Las conexiones que mataremos seran aquellas con un TIME de mas de 200.
Primero creamos el Procedimiento Almacenado:
create procedure purge_idle_connections() deterministic begin declare done boolean default false; declare max_time int default coalesce(@max_kill_time, 200); declare pid bigint; declare c cursor for SELECT id FROM information_schema.processlist WHERE command in ('Sleep') AND time > max_time; declare continue handler for not found set done = true; open c; set @q_kill = 'KILL ?'; prepare q_kill from @q_kill; PURGELOOP: loop fetch c into pid; if done then leave PURGELOOP; end if; set @pid = pid; execute q_kill using @pid; end loop; deallocate prepare q_kill; end;Ahora crearemos el SCHEDULE para que se ejecute cada 10 segundos:
create event auto_purge_idle_connections on schedule every 10 second do call purge_idle_connections();Es importante que luego de crear el SCHEDULE lo editemos, por ejemplo con el EMS para quitar el tilde en
"on completion not preserve" dado que si esta marcado se borrara al ajecutarse una vez.
Con esto tan simple ya tenemos a MySql con las conexiones activas y ninguna durmiendo.
Vean tambien http://www.youcode.com.ar/mysql/kill-slow-querys-mysql-295
http://www.youcode.com.ar/mysql/kill-sleeping-connections-294