percona 实用工具之pt-kill使用介绍
pt-kill是一个优秀的killMySQL连接的一个工具,是perconatoolkit的一部分,在因为空闲连接较多导致超过最大连接数、某个有问题的sql导致mysql负载很高时,都需要将一些连接kill掉,这个工具主要就是这个用途。
从showprocesslist中获取满足条件的连接或者从包含showprocesslist的文件中读取满足条件的连接并打印或者杀掉或者执行其他操作,这个工具在工作中实用性很高,当服务器连接出现异常后第一想到的就是pt-kill,自己写一个脚本也可以,但是功能还是没有pt-kill强大;一般我喜欢将连接本地MySQL的必要信息放在一个文件文件中,当需要连接本地mysql时直接指定配置文件即可;
常用功能介绍
pt-kill--defaults-filexx--match-commandSleep--kill--victimsall--interval10每隔10s杀掉处于sleep状态的连接数;
pt-killdefaults-filexx--busy-time60--kill--victimsall--interval10每隔10s杀掉处初步runnning状态超过60s的连接数;
几个重要参数
--daemonize 放在后台以守护进程的形式运行;
--interval 多久运行一次,单位可以是s,m,h,d等默认是s
--victims默认是oldest,只杀最古老的查询。这是防止被查杀是不是真的长时间运行的查询,他们只是长期等待。这种种匹配按时间查询,杀死一个时间最高值。
all杀掉所有满足的线程
杀死所有,但最长的保留不杀
action
--kill 杀掉连接并且退出
--kill-query 只杀掉连接执行的语句,但是线程不会被终止
--print 打印满足条件的语句
QUERYMATCHES
--busy-time批次查询已运行的时间超过这个时间的线程;
--idle-time杀掉sleep了多少时间的连接线程,必须在--match-commandsleep时才有效
更多介绍可以参考官方的文档:https://www.percona.com/doc/percona-toolkit/2.1/pt-kill.html#cmdoption-pt-kill--interval
参数
–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