Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je enregistrer show processlist lorsqu'il y a plus de n requêtes ?

pt-stalk est conçu dans ce but précis. Il échantillonne la liste des processus toutes les secondes (ou quelle que soit l'heure que vous spécifiez), puis lorsqu'un seuil est atteint (Threads_running est la valeur par défaut et c'est ce que vous voulez dans ce cas), collecte tout un tas de données, y compris l'activité du disque, tcpdumps, plusieurs des exemples de la liste des processus, des variables d'état du serveur, de l'état mutex/innodb et bien d'autres.

Voici comment démarrer :

pt-stalk --daemonize --dest /var/lib/pt-stalk --collect-tcpdump --threshold 50 --cycles 1 --disk-pct-free 20 --retention-time 3 -- --defaults-file=/etc/percona-toolkit/pt-stalk_my.cnf

La commande ci-dessus échantillonnera Threads_running (--threshold; réglez ceci sur votre valeur pour n ), chaque seconde (par défaut --interval ) et lance une collecte de données si Threads_running est supérieur à 50 pour 1 échantillon consécutif (--cycles ). 3 jours (--retention-time ) d'échantillons seront conservés et la collecte ne se déclenchera pas si moins de 20 % de votre disque est libre (--disk-pct-free ). A chaque collecte, un tcpdump au format pcap sera exécuté (--collect-tcpdump ) qui peuvent être analysés avec des outils tcpdump conventionnels ou un certain nombre d'autres outils Percona Toolkit, y compris pt-query-digest et pt-tcp-model . Il y aura 5 minutes de repos entre les échantillons (par défaut, --sleep ) afin d'éviter de DoS'ing vous-même. Le processus sera démonisé (--daemonize ). Les paramètres après -- sera transmis à toutes les commandes mysql/mysqladmin, c'est donc un bon endroit pour définir des choses comme --defaults-file où vous pouvez stocker vos identifiants de connexion à l'abri des regards indiscrets.