pt-kill 常用杀进程参数介绍
pt-kill是一个优秀的killMySQL连接的一个工具,是perconatoolkit的一部分,在因为空闲连接较多导致超过最大连接数、某个有问题的sql导致mysql负载很高时,都需要将一些连接kill掉,这个工具主要就是这个用途。
1.按userkill
/usr/bin/pt-kill--busy-time15 --match-user="dbUSER1|dbUSER2,..."--victimall--interval1--kill--daemonize--pid=/tmp/ptkill.pid--print--log=/home/pt-kill.log
注:测试通过按用户来杀线程,注意--match-user多个用户之间用|分隔。
2.按query来源hostkill
/usr/bin/pt-kill--busy-time15 --match-host="192.168.10.10|192.168.10.11"--victimall--interval1--kill--daemonize--pid=/tmp/ptkill.pid--print--log=/home/pt-kill.log
--ignore-host /--match-host
注:测试通过按来源host来杀线程,注意--match-host多个host之间用|分隔。
3.按commandkill
/usr/bin/pt-kill--busy-time15 --match-command="query|Execute"--victimall--interval1--kill--daemonize--pid=/tmp/ptkill.pid--print--log=/home/pt-kill.log
/usr/bin/pt-kill--busy-time15 --ignore-command="sleep|binlogdump"--victimall--interval1--kill--daemonize--pid=/tmp/ptkill.pid--print--log=/home/pt-kill.log
注:测试通过按command来杀掉线程,注意command的内容一定要严格匹配大小写,否则会杀不掉。注意--match-command多个command之间用|分隔,否则会失效。
(command有:Query、Sleep、BinlogDump、Connect、Delayedinsert、Execute、Fetch、InitDB、Kill、Prepare、Processlist、Quit、Resetstmt、TableDump)
4.按statekill
/usr/bin/pt-kill--busy-time15--match-state="Locked|Sendingdata"--victimall--interval1--kill--daemonize--pid=/tmp/ptkill.pid--print--log=/home/pt-kill.log
注:测试通过按state来杀掉线程,注意state的内容一定要严格匹配大小写,否则会杀不掉。注意--match-state多个state之间用|分隔,否则会失效。
(state类型有:Locked、login、copytotmptable、Copyingtotmptable、Copyingtotmptableondisk、Creatingtmptable、executing、Readingfromnet、Sendingdata、Sortingfororder、Sortingresult、Tablelock、Updating)
5.按info关键字kill
/usr/bin/pt-kill--busy-time15--match-info="SELECT|DELETE"--victimall--interval1--kill--daemonize--pid=/tmp/ptkill.pid--print--log=/home/pt-kill.log
注:测试通过按info来杀掉线程,注意info的内容一定要严格匹配大小写,否则会杀不掉。注意--match-info多个info之间用|分隔,否则会失效。
--ignore-info /--match-info
(info可以使用select、update、insert、delete来进行匹配,并可使用"|"进行多项匹配,如"select|SELECT|delete|DELETE|update|UPDATE"
6.按访问的dbnamekill
/usr/bin/pt-kill--busy-time15--match-db="db1|db2" --victimall--interval1--kill--daemonize--pid=/tmp/ptkill.pid--print--log=/home/pt-kill.log
--ignore-db /--match-db
注:测试通过按db来杀掉线程,注意db的内容一定要严格匹配大小写,否则会杀不掉。注意--match-db多个db之间用|分隔,否则会失效。
另:Action:
--kill 杀掉连接并且退出
--kill-query 只杀掉连接执行的语句,但是线程不会被终止