Comment detecter et tuer des processus MySQL
Si vous cherchez à déterminer ce qui se passe quand votre appel PHP mysql_query tient énormément de temps, une commande MySQL pourrait vous faciliter la vie. show processlist est une commande MySQL utile pour garder trace des transactions client serveur. Vous pouvez utiliser les IDs pour tuer les processus errants. La commande liste toutes les connections ouvertes au serveur, associées a un ID, au hôte, utilisateur, base de données ainsi que la requête elle même, et une information intéressante qui est l’état de la requête. La requête peut être tout simplement lancée par le client MySQL.
mysql> SHOW PROCESSLIST;
+----+-------+----------------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------+----------------+------+---------+------+-------+------------------+
| 28 | root | 127.0.0.1:1704 | NULL | Query | 0 | NULL | show processlist |
| 45 | admin | 127.0.0.1:1725 | db1 | Sleep | 0 | | NULL |
| 49 | root | 127.0.0.1:1726 | db1 | Sleep | 1 | | NULL |
+----+-------+----------------+------+---------+------+-------+------------------+
3 rows in set (0.10 sec)
Notez toutefois que puisque cette commande affiche des informations sur l’ensemble des requêtes exécutées, elle est uniquement disponible pour les utilisateurs avec un super privilège comme l’utilisateur root. La liste des états peut être consultées sur le site de MySQL.
En plus de pouvoir afficher les processus, les utilisateurs avec un super privilège peuvent donc “tuer” ces processus en utilisant la commande KILL suivie de l’identifiant du processus. ceci est particulièrement utiles pour les processus zombie.
mysql> KILL 49;
Query OK, 0 rows affected (0.05 sec)
Il est a noter que la commande Kill va tuer le processus sans interrompre la connexion.
