pt-stalk är utformad för just detta ändamål. Den samplar processlistan varje sekund (eller vilken tid du än anger), sedan när en tröskel nås (Threads_running är standard och är vad du vill ha i det här fallet), samlar den in en hel massa data, inklusive diskaktivitet, tcpdumps, flera exempel på processlistan, serverstatusvariabler, mutex/innodb-status och en massa mer.
Så här startar du det:
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
Kommandot ovan kommer att ta ett exempel på Threads_running (--threshold; ställ in detta till ditt värde för n ), varje sekund (standard för --interval ) och aktivera en datainsamling om Threads_running är större än 50 för 1 på varandra följande prov (--cycles ). 3 dagar (--retention-time ) av prover kommer att behållas och collect kommer inte att aktiveras om mindre än 20 % av din disk är ledig (--disk-pct-free ). Vid varje samling kommer ett pcap-format tcpdump att köras (--collect-tcpdump ) som kan analyseras med antingen konventionella tcpdump-verktyg eller ett antal andra Percona Toolkit-verktyg, inklusive pt-query-digest
och pt-tcp-model
. Det kommer att vara 5 minuters vila mellan proverna (standard för --sleep). ) för att förhindra att du gör dig själv. Processen kommer att demoniseras (--daemonize ). Parametrarna efter -- kommer att skickas till alla mysql/mysqladmin-kommandon, så det är ett bra ställe att ställa in saker som --defaults-file där du kan lagra dina inloggningsuppgifter borta från nyfikna ögon.