pt-stalk é projetado para este propósito exato. Ele mostra a lista de processos a cada segundo (ou a qualquer hora que você especificar), então quando um limite é atingido (Threads_running é o padrão e é o que você deseja neste caso), coleta um monte de dados, incluindo atividade de disco, tcpdumps, múltiplos amostras da lista de processos, variáveis de status do servidor, status mutex/innodb e muito mais.
Veja como iniciá-lo:
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
O comando acima irá amostrar Threads_running (
--threshold
; defina isso como seu valor para n ), a cada segundo (padrão de --interval
) e acione uma coleta de dados se Threads_running for maior que 50 para 1 amostra consecutiva (--cycles
). 3 dias (--retention-time
) das amostras serão mantidas e a coleta não será acionada se menos de 20% do seu disco estiver livre (--disk-pct-free
). Em cada coleção, um formato pcap tcpdump será executado (--collect-tcpdump
) que pode ser analisado com ferramentas convencionais de tcpdump ou várias outras ferramentas do Percona Toolkit, incluindo pt-query-digest
e pt-tcp-model
. Haverá um descanso de 5 minutos entre as amostras (padrão de --sleep
) para evitar que você mesmo faça DoS. O processo será daemonizado (--daemonize
). Os parâmetros após --
será passado para todos os comandos mysql/mysqladmin, então é um bom lugar para definir coisas como --defaults-file
onde você pode armazenar suas credenciais de login longe de olhares indiscretos.