Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso registrare show processlist quando ci sono più di n query?

pt-stalk è progettato proprio per questo scopo. Campiona l'elenco dei processi ogni secondo (o in qualsiasi momento tu specifichi), quindi quando viene raggiunta una soglia (Threads_running è l'impostazione predefinita ed è ciò che desideri in questo caso), raccoglie un intero gruppo di dati, tra cui attività del disco, tcpdumps, multiple esempi dell'elenco dei processi, variabili di stato del server, stato mutex/innodb e molto altro.

Ecco come avviarlo:

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

Il comando precedente analizzerà Threads_running (--threshold; impostalo sul tuo valore per n ), ogni secondo (impostazione predefinita di --interval ) e avvia una raccolta di dati se Threads_running è maggiore di 50 per 1 campione consecutivo (--cycles ). 3 giorni (--retention-time ) dei campioni verranno conservati e la raccolta non si attiverà se meno del 20% del disco è libero (--disk-pct-free ). Ad ogni raccolta, verrà eseguito un tcpdump in formato pccap (--collect-tcpdump ) che può essere analizzato con gli strumenti tcpdump convenzionali o con una serie di altri strumenti Percona Toolkit, tra cui pt-query-digest e pt-tcp-model . Ci sarà un riposo di 5 minuti tra i campioni (impostazione predefinita di --sleep ) al fine di evitare di fare il DoS da soli. Il processo verrà demonizzato (--daemonize ). I parametri dopo -- verrà passato a tutti i comandi mysql/mysqladmin, quindi è un buon posto per impostare cose come --defaults-file dove puoi memorizzare le tue credenziali di accesso lontano da occhi indiscreti.