web-dev-qa-db-fra.com

Shell Script pour tuer automatiquement les processus de veille mysql

Comment nous tuons les processus de sommeil mysql

 + ------ + ----------- + ----------- + --------------- --------- + --------- + ------ + ---------------- + ------ -------------------------------------------------- ----------------------------------- + 
 | Id | Utilisateur | Hôte | db | Commande | Le temps | Etat | Info | 
 + ------ + ----------- + ----------- + ------------- ----------- + --------- + ------ + ---------------- + ---- -------------------------------------------------- ------------------------------------- + 
 | 2477 | stageuser | localhost | jj_production_11102013 | Requête | 0 | fin | SELECT * FROM wp_comments WHERE blog_id = 1071 ORDER BY comment_date_gmt DESC LIMIT 0, 50 | 
 |. 3050 | stageuser | localhost | jj_production_11102013 | Requête | 0 | Résultat du tri | SELECT * FROM wp_comments WHERE blog_id = 1071 ORDER BY comment_date_gmt DESC LIMIT 0, 50 | 
 |. 3052 | stageuser | localhost | jj_production_11102013 | Sommeil | 336 | | NULL | 
 | 3056 | stageuser | localhost | NULL | Requête | 0 | NULL | show processlist | 
 | 3057 | stageuser | localhost | jj_production_11102013 | Sommeil | 301 | | NULL | 
 | 3058 | stageuser | localhost | jj_production_11102013 | Sommeil | 299 | | NULL | 
 | 3059 | stageuser | localhost | jj_production_11102013 | Sommeil | 298 | | NULL | 
 | 3061 | stageuser | localhost | jj_production_11102013 | Sommeil | 273 | | NULL | 
 | 3068 | stageuser | localhost | jj_production_11102013 | Sommeil | 251 | | NULL | 
 | 3072 | stageuser | localhost | jj_production_11102013 | Sommeil | 233 | | NULL | 
 | 3111 | stageuser | localhost | jj_production_11102013 | Sommeil | 1 | | NULL | 
 + ------ + ----------- + ----------- + ------------- ----------- + --------- + ------ + ---------------- + ---- -------------------------------------------------- ------------------------------------- + 
 11 lignes dans l'ensemble (0.00 sec)

Ces processus de mise en veille affectent-ils les performances du site comme des requêtes lentes?

12
Vishal Kamal

Je l'ai fait.

Créer un fichier kill_sleep.sh

mysql -u<user> -p<password> -h<Host> -e "select concat('KILL ',id,';')  into outfile '/tmp/sleep_processes.txt' from information_schema.processlist where Command = 'Sleep'"
mysql -u<user> -p<password> -h<Host> -e "source /tmp/sleep_processes.txt;"
rm -rf /tmp/sleep_processes.txt

Et définissez kill_sleep.sh sur cron job.

10
Vishal Kamal

La réponse de Vishal fonctionne bien si vous exécutez la commande sur le serveur MySQL, mais cela ne fonctionnera pas si vous vous connectez au serveur à distance ou si vous n'êtes pas autorisé à exécuter SOURCE ou SELECT ... INTO OUTFILE (par exemple, le RDS d'Amazon). . Il est possible de le réécrire pour ne pas compter sur ces fonctionnalités, et cela fonctionnera n'importe où:

mysql -h<Host> -u<user> -p -e "SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE Command = 'Sleep'" > sleep.txt
cat sleep.txt | xargs -I% mysql -h<Host> -u<user> -p -e "%"
5
Ben Dowling

La syntaxe est la suivante: 

KILL thread_id

Dans ton cas: 

  mysql > KILL 3057

Mais pour supprimer tous les processus de veille, une commande ne peut pas être utilisée, vous devez parcourir toute la liste de processus, après avoir pris tous les processus dans la table tmp et les avoir parcourues: 

select concat('KILL ',id,';') from information_schema.processlist where Command='Sleep';

select concat('KILL ',id,';') from information_schema.processlist where Command='Sleep' into outfile '/tmp/a.txt';

Référé de ici

2
Jhanvi

Outils Percona:

pt-kill --match-command Sleep --idle-time 100 --victims all  --interval 30 --kill

Cela trouvera toutes les connexions qui sont en mode "veille" et qui resteront inactives pendant 100 secondes ou plus et les tueront. --interval 30 le fera continuer toutes les 30 secondes. Donc, vous pouvez ouvrir un écran -S ptkill puis dans cet écran, exécutez la commande ci-dessus, puis ctrl-A, D pour détacher et quitter le terminal et il continuera simplement à nettoyer vos connexions.

https://www.percona.com/doc/percona-toolkit/2.1/pt-kill.html

0
John Peterson