Comment puis-je ouvrir une session “show processlist” quand il y a plus de n requêtes?
Notre mysql processus peut parfois s'accumulent les retards et les processus de commencer à faire la queue. J'aimerais debug quand et pourquoi cela se produit en vous connectant la processlist pendant les périodes creuses.
Je voudrais show full processlist;
via une tâche cron et enregistrer la sortie dans un fichier texte si il y a plus de 50
nombre de lignes retournées.
Pouvez-vous me diriger dans la bonne direction?
Par exemple:
echo "show full processlist;" | mysql -uroot > processlist-`date +%F-%H-%M`.log
Je voudrais que le résultat contient le texte 50 rows in set
(ou plus grand que 50
lignes).
- Pouvez-vous exécuter avec succès le
show full processlist
viacron
? - à l'aide de cron job exécuter show, retour du signal de sortie dans le fichier. vérifiez de retour, si plus de 50, le garder, si pas le cas, supprimez le fichier.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, assurez-vous de MySQL requêtes lentes journal n'est pas ce dont vous avez besoin. Aussi, MySQL
-e
paramètre vous permet de spécifier une requête sur la ligne de commande.Tournant la logique, ce qui économise de la liste des processus et de le supprimer lorsque la liste de processus n'est pas assez long:
pt-tige est conçu pour cet objectif précis. Il échantillons de la liste des processus à chaque seconde (ou quel que soit le temps que vous spécifiez), puis lorsqu'un seuil est atteint (Threads_running est la valeur par défaut et est ce que vous voulez dans ce cas), recueille tout un tas de données, y compris l'activité du disque, tcpdumps, plusieurs échantillons de la liste des processus, des variables de statut du serveur, mutex/innodb status, et un tas plus.
Voici comment démarrer:
La commande ci-dessus va de l'échantillon Threads_running (
--threshold
; mettez cela à votre valeur de n), la seconde (par défaut--interval
) et le feu de la collecte de données si Threads_running est supérieure à 50 pour 1 échantillon consécutif (--cycles
). 3 jours (--retention-time
), des échantillons seront conservés et recueillons pas de feu si moins de 20% de votre disque est libre (--disk-pct-free
). Lors de chaque collection, une ppce format tcpdump sera exécuté (--collect-tcpdump
) qui peuvent être analysés avec traditionnelles de tcpdump outils, ou un certain nombre d'autres Percona Trousse d'outils, y compris pt-query-digest et pt-tcp-modèle. Il y aura 5 minutes de repos entre les échantillons (par défaut--sleep
) afin d'éviter de DoS avec vous-même. Le processus sera automatiquement (--daemonize
). Les paramètres après--
sera transmis à tous les mysql/mysqladmin commandes, donc c'est un bon endroit pour mettre des choses comme--defaults-file
où vous pouvez stocker vos informations de connexion à l'écart des regards indiscrets.