pt-kill的使用

Pt-kill的使用

pt-kill是用来杀死MySQL线程(连接)的工具(MySQL中通过show processlist查询线程情况),杀死某些匹配特定的queries,如负载较高的SQLsleep较久的查询(短连接时杀死空闲久的以防止超过最大连接数)。

Action:

--kill为杀掉相关线程id

--kill-query为杀掉相关SQL保留线程id

--print为打印出相关线程id

Query matches:

(都是匹配于show processlist的输出信息)

注:--ignore要优先于其他选项

--busy-time

running匹配超过此值(时间秒的)线程;

--idle-time

匹配于idle/sleeping超过此时间的线程;

--ignore-command

匹配忽略匹配此command的线程;

--ignore-db

匹配忽略此db相关的线程;

--ignore-host

匹配忽略来源于host的相关线程;

--ignore-info

匹配忽略关键字(SQL)的相关线程;

--ignore-state

匹配忽略此State相关线程;

--ignore-user

匹配忽略此user相关线程;

 

注:DNS连接基本上与MySQL一样

--kill掉空闲大于100s的连接

 

eg:pt-kill --idle-time 100 --kill --victims all --interval 10  -uroot -pxxx -S /tmp/mysql3312.sock

--打印出线程

pt-kill --idle-time 20 --print --victims all --interval 10  -uroot -pxxx -S /tmp/mysql3312.sock

# 2016-10-19T11:18:15 KILL 20528 (Sleep 111 sec) NULL   --打印出线程,线程id20528

--killrunning超过60s的连接

 

eg:pt-kill --busy-time 20 --kill --victims all -uroot -pxxx -S /tmp/mysql3312.sock

--match-command

eg:kill掉sleep线程(超过20s的),每间隔10s执行kill一次

pt-kill --match-command Sleep --idle-time 20 --kill --victims all --interval 10 -uroot -pxxx -S /tmp/mysql3312.sock

--match-state

eg:kill掉state为User sleep的线程,关键字要匹配到state的状态部分词,如“sleep”

pt-kill --match-state "User sleep" --print --victims all --busy-time 20  -uroot -pxxx -S /tmp/mysql3312.sock

Common State values are:

  • Locked
  • login
  • copy to tmp table
  • Copying to tmp table
  • Copying to tmp table on disk
  • Creating tmp table
  • executing
  • Reading from net
  • Sending data
  • Sorting for order
  • Sorting result
  • Table lock
  • Updating

--match-user

kill掉用户为jicctester的线程

pt-kill --match-user "jicc|tester" --kill --victims all --busy-time 20  -uroot -pxxx -S /tmp/mysql3312.sock

--match-host

kill掉来源于host的线程

pt-kill --match-host "192.168.50.239|xxxhost" --print --victims all --busy-time 20  -uroot -pxxx -S /tmp/mysql3312.sock

--match-info 【匹配SQL关键字】

kill掉匹配关键字“select|delete”的线程,注意匹配字为原关键字SQL(注意大小写)

pt-kill --match-info "select" --kill --victims all --busy-time 20 -uroot -pxxx -S /tmp/mysql3312.sock

--match-db

kill掉某个db相关的线程

pt-kill --match-db "db001|zk" --print --victims all --busy-time 20 -uroot -pxxx -S /tmp/mysql3312.sock

--test-matching

查看show processlist信息

通过pt-kill查看抓取的show processlist结果

mysql -e “show processlist” > process.txt

pt-kill --test-matching process.txt --busy-time 60 --print

--victims是所有的queries,默认是the oldest query

转载于:https://www.cnblogs.com/jicksmysql/p/5977404.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值