Parce que je vois beaucoup de processus ici, et la colonne "temps" montre de grandes valeurs pour chacun d'entre eux.
N'oubliez pas de vous référer à la source : mysqlperformanceblog.com/2009/05/21/
Parce que je vois beaucoup de processus ici, et la colonne "temps" montre de grandes valeurs pour chacun d'entre eux.
Massacre de masse L'opération permet de gagner du temps. Faites-le dans MySql même :
Exécutez ces commandes
mysql> select concat('KILL ',id,';') from information_schema.processlist
where user='root' and time > 200 into outfile '/tmp/a.txt';
mysql> source /tmp/a.txt;
---------edit------------
si vous ne voulez pas stocker dans un fichier, stockez dans une variable
Il suffit d'exécuter dans votre invite de commande
> out1=$(mysql -B test -uroot -proot --disable-column-names -e "select concat('KILL ',id,';') from information_schema.processlist where user='root' and time > 200;")
> out2= $(mysql -B test -uroot -proot --disable-column-names -e "$out1")
@ArtemGoutsoul mais je ne me souviens pas avoir fait référence à ce site. C'est ma propre tendance à faire ça.
Vous devez les tuer un par un, MySQL n'a pas de commande kill massive. Vous pouvez script cela dans n'importe quel langage, par exemple en PHP vous pouvez utiliser quelque chose comme :
$result = mysql_query("SHOW FULL PROCESSLIST");
while ($row=mysql_fetch_array($result)) {
$process_id=$row["Id"];
if ($row["Time"] > 200 ) {
$sql="KILL $process_id";
mysql_query($sql);
}
}
J'ai également cherché comment analyser la commande SHOW PROCESSLIST dans MySQL et j'ai abouti à une ligne unique dans un shell :
mysqladmin processlist -u <USERNAME> -p<PASSWORD> | \
awk '$2 ~ /^[0-9]/ {print "KILL "$2";"}' | \
mysql -u <USERNAME> -p<PASSWORD>
Vous pouvez exécuter grep avant le awk pour filtrer un nom de base de données particulier.
Connectez-vous à Mysql en tant qu'administrateur :
mysql -uroot -ppassword;
Et ensuite lancer la commande :
mysql> show processlist;
Vous obtiendrez quelque chose comme ci-dessous :
+----+-------------+--------------------+----------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+--------------------+----------+---------+------+-------+------------------+
| 49 | application | 192.168.44.1:51718 | XXXXXXXX | Sleep | 183 | | NULL ||
| 55 | application | 192.168.44.1:51769 | XXXXXXXX | Sleep | 148 | | NULL |
| 56 | application | 192.168.44.1:51770 | XXXXXXXX | Sleep | 148 | | NULL |
| 57 | application | 192.168.44.1:51771 | XXXXXXXX | Sleep | 148 | | NULL |
| 58 | application | 192.168.44.1:51968 | XXXXXXXX | Sleep | 11 | | NULL |
| 59 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+-------------+--------------------+----------+---------+------+-------+------------------+
Vous verrez les détails complets des différentes connexions. Maintenant vous pouvez tuer la connexion en sommeil comme ci-dessous :
mysql> kill 52;
Query OK, 0 rows affected (0.00 sec)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Vous pouvez également redémarrer mysqld, par exemple,
sudo service mysqld restart