percona 实用工具之pt-kill使用介绍

pt-kill是一个优秀的kill MySQL连接的一个工具,是percona toolkit的一部分,在因为空闲连接较多导致超过最大连接数、某个有问题的sql导致mysql负载很高时,都需要将一些连接kill掉,这个工具主要就是这个用途。

从show processlist 中获取满足条件的连接或者从包含show processlist的文件中读取满足条件的连接并打印或者杀掉或者执行其他操作,这个工具在工作中实用性很高,当服务器连接出现异常后第一想到的就是pt-kill,自己写一个脚本也可以,但是功能还是没有pt-kill强大;一般我喜欢将连接本地MySQL的必要信息放在一个文件文件中,当需要连接本地mysql时直接指定配置文件即可;

常用功能介绍
pt-kill --defaults-file xx --match-command Sleep --kill --victims all --interval 10 每隔10s 杀掉处于sleep状态的连接数;

pt-kill defaults-file xx --busy-time 60 --kill --victims all --interval 10 每隔10s 杀掉处初步runnning状态超过60s的连接数;

几个重要参数
--daemonize  放在后台以守护进程的形式运行;
--interval  多久运行一次,单位可以是s,m,h,d等默认是s
--victims 默认是oldest,只杀最古老的查询。这是防止被查杀是不是真的长时间运行的查询,他们只是长期等待。这种种匹配按时间查询,杀死一个时间最高值。
               all 杀掉所有满足的线程
               杀死所有,但最长的保留不杀

action
--kill                 杀掉连接并且退出
--kill-query           只杀掉连接执行的语句,但是线程不会被终止
--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

参数

–busy-time

运行时间

–idle-time

空闲时间

–victims

所有匹配的连接,对应有最久的连接

–interval

间隔时间,默认30s,有点长,可以根据实际情况来调节

–print

打印出来kill掉的连接

–match-command

匹配当前连接的命令

Query
Sleep
Binlog Dump
Connect
Delayed insert
Execute
Fetch
Init DB
Kill
Prepare
Processlist
Quit
Reset stmt
Table Dump
–match-state

匹配当前连接的状态

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-info

使用正则表达式匹配符合的sql

–match-db –match-user –match-host

见名知意

常用用法

杀掉空闲链接

pt-kill –match-command Sleep –idle-time 5 –host –port –interval –print –kill –victims all

杀掉运行时间超过5s的链接

pt-kill –match-command Query –busy-time 5 –host –port –interval –print –kill –victims all

杀掉匹配某个规则的正在运行的sql

pt-kill –match-command Query –busy-time 5 –host –port –interval –print –kill –victims all –match-info

杀掉正在进行filesort的sql

pt-kill –match-command Query –match-state “Sorting result” busy-time 5 –host –port –interval –print –kill –victims all

杀掉正在Copying to tmp table的sql

pt-kill –match-command Query –match-state “Copying to tmp table” busy-time 5 –host –port –interval –print –kill –victims all

(0)

相关推荐

  • pt-kill 常用杀进程参数介绍

    pt-kill 是一个优秀的kill MySQL连接的一个工具,是percona toolkit的一部分,在因为空闲连接较多导致超过最大连接数.某个有问题的sql导致mysql负载很高时,都需要将一些连接kill掉,这个工具主要就是这个用途. 1. 按user kill /usr/bin/pt-kill --busy-time 15   --match-user="dbUSER1 | dbUSER2,..." --victim all --interval 1 --kill --dae

  • percona-toolkit之pt-kill 杀掉mysql查询或连接的方法

    pt-kill 是一个非常简单的 杀mysql线程和查询的 工具. 主要是为了防止一些长的查询 长时间占用 系统资源,而对线上业务造成影响的情况. 主要作用: 从show processlist 中获取满足条件的连接或者从包含show processlist的文件中读取满足条件的连接并打印或者杀掉或者执行其他操作. 我们这里主要用来防止某些select操作时间过长,从而影响其他线上SQL. 安装: 安装percona-toolkit即可 使用范例: pt-kill --log-dsn D=tes

  • 使用pt-kill根据一定的规则来kill连接的方法

    pt-kill 是一个优秀的kill MySQL连接的一个工具,是percona toolkit的一部分,在因为空闲连接较多导致超过最大连接数.某个有问题的sql导致mysql负载很高时,都需要将一些连接kill掉,这个工具主要就是这个用途. 参数 –busy-time 运行时间 –idle-time 空闲时间 –victims 所有匹配的连接,对应有最久的连接 –interval 间隔时间,默认30s,有点长,可以根据实际情况来调节 –print 打印出来kill掉的连接 –match-com

  • percona 实用工具之pt-kill使用介绍

    pt-kill是一个优秀的kill MySQL连接的一个工具,是percona toolkit的一部分,在因为空闲连接较多导致超过最大连接数.某个有问题的sql导致mysql负载很高时,都需要将一些连接kill掉,这个工具主要就是这个用途. 从show processlist 中获取满足条件的连接或者从包含show processlist的文件中读取满足条件的连接并打印或者杀掉或者执行其他操作,这个工具在工作中实用性很高,当服务器连接出现异常后第一想到的就是pt-kill,自己写一个脚本也可以,

  • Java处理表格的实用工具库

    目录 前言 Easy Excel 需求 读取表格 创建对象的读 不创建对象的读 写入表格 EasyExcel特点 总结 前言 处理 Excel 表格是开发中经常遇到的需求,比如表格合并.筛选表格中的某些行列.修改单元格数据等. 今天给大家分享一个 Java 处理表格的工具库,不需要任何专业知识,拿来就能用,快速又轻松~ 可能有同学说了,用 Python 处理表格不是更方便么?为毛用 Java 啊? 当然是因为企业中大部分后台开发用的都是 Java!如果你要搞一个允许用户自主上传 Excel 进行

  • Python监控服务器实用工具psutil使用解析

    这篇文章主要介绍了Python监控服务器实用工具psutil使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 服务器的监控通过安装一些常用的监控软件之外,有时也需要运行一些shell或Python脚本:shell下可以使用系统自带的ps/free/top/df等shell命令,Python可以调用subprocess等模块来运行shell命令,不过这么做就比较麻烦.这里有一个比较好用的第三方模块:psutil. psutil是一个跨平台的

  • SQLServer按顺序执行多个脚本的方法(sqlcmd实用工具使用方法)

    解决方法: 应对这种情况有以下几种方法: 1.购买第三方软件(一般估计很少人买) 2.自己编程一个小软件来执行,但是这个逻辑性要求比较高,而且编程的能力要有一定层次,这个我暂时没有. 3.使用本文介绍的方法,至于是啥,接着看: 使用SQLCMD在SQLServer上执行多个脚本: SQLCMD:使用 sqlcmd 实用工具,可以在命令提示符处.在 SQLCMD 模式下的"查询编辑器"中.在 Windows 脚本文件中或者在 SQL Server 代理作业的操作系统 (Cmd.exe)

  • Bootstrap 响应式实用工具实例详解

    Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发.这些可以通过媒体查询结合大型.小型和中型设备,实现内容对设备的显示和隐藏. 需要谨慎使用这些工具,避免在同一个站点创建完全不同的版本.响应式实用工具目前只适用于块和表切换. 实例 下面的实例演示了上面所列举的帮助器类的用法.调整浏览器的窗口大小,或者在不同的设备上加载实例,测试响应式实用工具类. <div class="container" style="padding: 40px;"&

  • Vue.js 中的实用工具方法【推荐】

    收集日常开发中常用到的一些工具方法, 包含 vue 的公用过滤器.公用指令等 (PS: 懒人养成记) 公用自定义过滤器 import Vue from 'vue' import moment from 'moment' /** * @filter dateFormat 时间格式化 * @param {String, Date} value 可被 new Date 解析的字符串 * @param {String} formatStr moment 的 format 字符串 * 使用方法 {{ 20

  • Java实用工具之使用oshi获取主机信息的方法

    最近在筹划做一个监控系统.其中就要获取主机信息,其中遇到一些问题.在此做个记录,以便以后查阅. 在该监控系统中,想要做到主机的CPU.内存.磁盘.网络.线程.JVM内存.JVM GC 等维度的监控,JVM方面的监控还好说,直接用JMX做就行了,关键是主机信息不好做监控,JDK没有直接的方案获取系统主机信息.在刚开始想到了以下几种方式获取主机维度的信息. 一.命令行 刚开始想的是用最常用的命令行获取主机维度的信息,具体做法是针对不同的系统,写不同的命令.比如说Linux系统,使用TOP命令就能获取

  • c# 编写一个轻量级的异步写日志的实用工具类(LogAsyncWriter)

    一说到写日志,大家可能推荐一堆的开源日志框架,如:Log4Net.NLog,这些日志框架确实也不错,比较强大也比较灵活,但也正因为又强大又灵活,导致我们使用他们时需要引用一些DLL,同时还要学习各种用法及配置文件,这对于有些小工具.小程序.小网站来说,有点"杀鸡焉俺用牛刀"的感觉,而且如果对这些日志框架不了解,可能输出来的日志性能或效果未毕是与自己所想的,鉴于这几个原因,我自己重复造轮子,编写了一个轻量级的异步写日志的实用工具类(LogAsyncWriter),这个类还是比较简单的,实

  • Java实用工具之StringJoiner详解

    背景 在平时的业务开发中,我们可能会遇到字符串列表根据分隔符进行拼接的需求.比如: 输入: 数组:["a","b","c"]分隔符:"," 输出: "a,b,c" 处理 通常我们可以使用StringBuilder根据下标位置决定是否需要添加分隔符以达到目的,比如: public static void main(String[] args) { StringBuilder sb = new StringBu

  • 推荐两款java开发实用工具 hutool 和 lombok

    一.hutool工具 摘抄一段hutool工具的简介: Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,是项目中"util"包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务. hutool-aop JDK动态代理封装,提供非IOC下的切面支持 hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤 hutool-cache 简单缓存实现 hutool-core 核心,包括Bean操作.

随机推荐