pt-kill 是一個優(yōu)秀的kill MySQL連接的一個工具,是percona toolkit的一部分,在因為空閑連接較多導(dǎo)致超過最大連接數(shù)、某個有問題的sql導(dǎo)致mysql負載很高時,都需要將一些連接kill掉,這個工具主要就是這個用途。
從show processlist 中獲取滿足條件的連接或者從包含show processlist的文件中讀取滿足條件的連接并打印或者殺掉或者執(zhí)行其他操作,這個工具在工作中實用性很高,當(dāng)服務(wù)器連接出現(xiàn)異常后第一想到的就是pt-kill,自己寫一個腳本也可以,但是功能還是沒有pt-kill強大;一般我喜歡將連接本地MySQL的必要信息放在一個文件文件中,當(dāng)需要連接本地mysql時直接指定配置文件即可;
常用功能介紹
pt-kill --defaults-file xx --match-command Sleep --kill --victims all --interval 10 每隔10s 殺掉處于sleep狀態(tài)的連接數(shù);
pt-kill defaults-file xx --busy-time 60 --kill --victims all --interval 10 每隔10s 殺掉處初步runnning狀態(tài)超過60s的連接數(shù);
幾個重要參數(shù)
--daemonize 放在后臺以守護進程的形式運行;
--interval 多久運行一次,單位可以是s,m,h,d等默認(rèn)是s
--victims 默認(rèn)是oldest,只殺最古老的查詢。這是防止被查殺是不是真的長時間運行的查詢,他們只是長期等待。這種種匹配按時間查詢,殺死一個時間最高值。
all 殺掉所有滿足的線程
殺死所有,但最長的保留不殺
action
--kill 殺掉連接并且退出
--kill-query 只殺掉連接執(zhí)行的語句,但是線程不會被終止
--print 打印滿足條件的語句
QUERY MATCHES
--busy-time 批次查詢已運行的時間超過這個時間的線程;
--idle-time 殺掉sleep 了多少時間的連接線程,必須在--match-command sleep時才有效
更多介紹可以參考官方的文檔:https://www.percona.com/doc/percona-toolkit/2.1/pt-kill.html#cmdoption-pt-kill--interval
參數(shù)
–busy-time
運行時間
–idle-time
空閑時間
–victims
所有匹配的連接,對應(yīng)有最久的連接
–interval
間隔時間,默認(rèn)30s,有點長,可以根據(jù)實際情況來調(diào)節(jié)
打印出來kill掉的連接
–match-command
匹配當(dāng)前連接的命令
Query
Sleep
Binlog Dump
Connect
Delayed insert
Execute
Fetch
Init DB
Kill
Prepare
Processlist
Quit
Reset stmt
Table Dump
新聞熱點
疑難解答
圖片精選