使用pt-kill根据一定的规则来kill连接的方法
pt-kill是一个优秀的killMySQL连接的一个工具,是perconatoolkit的一部分,在因为空闲连接较多导致超过最大连接数、某个有问题的sql导致mysql负载很高时,都需要将一些连接kill掉,这个工具主要就是这个用途。
参数
–busy-time
运行时间
–idle-time
空闲时间
–victims
所有匹配的连接,对应有最久的连接
–interval
间隔时间,默认30s,有点长,可以根据实际情况来调节
打印出来kill掉的连接
–match-command
匹配当前连接的命令
Query
Sleep
BinlogDump
Connect
Delayedinsert
Execute
Fetch
InitDB
Kill
Prepare
Processlist
Quit
Resetstmt
TableDump
–match-state
匹配当前连接的状态
Locked
login
copytotmptable
Copyingtotmptable
Copyingtotmptableondisk
Creatingtmptable
executing
Readingfromnet
Sendingdata
Sortingfororder
Sortingresult
Tablelock
Updating
–match-info
使用正则表达式匹配符合的sql
–match-db–match-user–match-host
见名知意
常用用法
杀掉空闲链接
pt-kill–match-commandSleep–idle-time5–host–port–interval–print–kill–victimsall
杀掉运行时间超过5s的链接
pt-kill–match-commandQuery–busy-time5–host–port–interval–print–kill–victimsall
杀掉匹配某个规则的正在运行的sql
pt-kill–match-commandQuery–busy-time5–host–port–interval–print–kill–victimsall–match-info
杀掉正在进行filesort的sql
pt-kill–match-commandQuery–match-state“Sortingresult”busy-time5–host–port–interval–print–kill–victimsall
杀掉正在Copyingtotmptable的sql
pt-kill–match-commandQuery–match-state“Copyingtotmptable”busy-time5–host–port–interval–print–kill–victimsall