返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >Percona PT-kill重构版(PHP)
  • 832
分享到

Percona PT-kill重构版(PHP)

2024-04-02 19:04:59 832人浏览 薄情痞子
摘要

概述 原生Percona版 PT-kill(Perl)工具只是单纯的KILL掉正在运行中的慢sql,而不能作为一个监控工具使用,例如缺少邮件报警或者微信报警功能,固需要将其重构。重构版 PT-kill(P



概述 原生Percona版 PT-kill(Perl)工具只是单纯的KILL掉正在运行中的慢sql,而不能作为一个监控工具使用,例如缺少邮件报警或者微信报警功能,固需要将其重构。


重构版 PT-kill(PHP)从infORMation_schema.PROCESSLIST表中捕获正在运行中的SELECT|ALTER等DML/DDL消耗资源过多的查询,过滤它们,然后杀死它们(可选择不杀)且发邮件/微信报警给DBA和相关开发知悉,避免因慢SQL执行时间过长对数据库造成一定程度的伤害。(注:慢SQL执行完才记录到slow.log里,执行过程中不记录。)


Usage:

Options:

-u  username

-p  passWord

-h  host ip

-P  port

-B  busytime time seconds 设置慢SQL执行时间触发报警

-I  interval time seconds 设置守护进程下间隔监测时间

--kill 如果想杀掉慢查询,加上该选项。

--match-info 匹配杀掉SELECT|INSERT|UPDATE语句

--match-user 匹配杀掉的用户

--daemon 1开启后台守护进程,0关闭后台守护进程

--mail 开启发送邮件报警

--weixin 开启发送微信报警

--help  Help


Example :

前台运行

shell> php pt-kill.php -u admin -p 123456 -h 10.10.159.31 -P 3306 -B 10  --match-info='select|alter' --match-user='dev' --kill --mail --weixin


后台运行

shell> php pt-kill.php -u admin -p 123456 -h 10.10.159.31 -P 3306 -B 10  -I 15 --match-info='select|alter' --match-user='dev' --kill --mail --weixin --daemon 1


关闭后台运行

shell> php pt-kill.php --daemon 0


以上是工具的使用方法和参数选项。 这里说下比较重要的参数:

1、--kill 如果想杀掉慢查询,那么在后面添加该选项;


2、--match-info 可以单独使用,也可以和--match-user结合一起使用;


3、--daemon 1 是开启后台守护进程,如果不添加该选择,可以用系统的crontab代替。 该选项要和-I 10(秒)配合一起使用,即每休眠10秒监控一次。0为关闭后台守护进程。


4、--mail 为开启发送邮件报警,需先设置smtp_config.php,改成你自己的邮箱账号信息

smtp_config.php

<?php

    $content = nl2br(file_get_contents(dirname(__FILE__).'/kill.txt'));
    require_once "Smtp.class.php";

    //******************** 配置信息 ********************************
    $smtpserver = "smtp.126.com";//SMTP服务器
    $smtpserverport = 25;//SMTP服务器端口
    $smtpusermail = "chunyang_he@126.com";//SMTP服务器的用户邮箱
    $smtpemailto = 'chunyang_he@126.com';//发送给谁
    $smtpuser = "chunyang_he@126.com";//SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名
    $smtppass = "123456";//SMTP服务器的授权码
    $mailtitle = "警告!出现卡顿慢SQL,请及时优化处理!";//邮件主题
    $mailcontent = "<h2>".$content."</h2>";//邮件内容
    $mailtype = "html";//邮件格式(HTML/TXT),TXT为文本邮件
    //************************ 配置信息 ****************************

?>


5、--weixin 为开启发送微信报警,需要先安装下simpleJSON-3.8.2.tar.gz

shell> tar zxvf simplejson-3.8.2.tar.gz

shell> cd simplejson-3.8.2

shell> python setup.py build

shell> Python setup.py install

然后编辑pt-kill.php脚本 找到 $status1 = system("/usr/bin/python  wechat.py  'hcyMysql' {$row['DB']}库出现卡顿慢SQL! '{$content1}'"); 将其'hcymysql'我的微信号换成你自己的即可。

微信企业号设置 移步https://www.cnblogs.com/linuxprobe/p/5717776.html 看此教程配置。


6、会在工具目录下生成kill.txt文件保存慢SQL。

shell> cat kill.txt

2018-11-27 16:41:22

用户名:root

来源IP:localhost

数据库名:hcy

执行时间:18

SQL语句:select sleep(60)


7、默认只杀连接中的慢SQL,保留会话连接,如果想把连接也杀掉,去掉QUERY

修改pt-kill.php

//$kill_sql = "KILL QUERY {$row['ID']}";

$kill_sql = "KILL {$row['ID']}";

具体演示请看“pt_kill演示录像.avi”




--结束END--

本文标题: Percona PT-kill重构版(PHP)

本文链接: https://lsjlt.com/news/42993.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Percona PT-kill重构版(PHP)
    概述 原生Percona版 PT-kill(Perl)工具只是单纯的KILL掉正在运行中的慢SQL,而不能作为一个监控工具使用,例如缺少邮件报警或者微信报警功能,固需要将其重构。重构版 PT-kill(P...
    99+
    2024-04-02
  • percona-tools中的pt-kill是什么
    这期内容当中小编将会给大家带来有关percona-tools中的pt-kill是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。选项--config  指定配...
    99+
    2024-04-02
  • Percona pt-archiver重构版--大表数据归档工具
    Percona pt-archiver重构版--大表数据归档工具相信很多小伙伴们,在日常对接开发时,有很多大表在业务上并没有采取任何形式的切分,数据不停地往一张表里灌入,迟早有一天,磁盘空间报警。作为一个D...
    99+
    2024-04-02
  • Percona-Toolkit中pt-kill用法是怎样的呢
    Percona-Toolkit中pt-kill用法是怎样的呢,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。生产环境中我们时常遇...
    99+
    2024-04-02
  • PHP 代码重构最佳实践
    答案:php 代码重构遵循提高解耦性、可读性、可维护性、减少复杂性的原则。实践:使用命名空间组织代码。用依赖注入容器解耦组件。重构冗余代码。分解大型类。使用现代代码风格。 PHP 代码...
    99+
    2024-05-06
    php 重构 phpstorm laravel
  • 怎么更好地重构PHP代码
    这篇文章主要介绍“怎么更好地重构PHP代码”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么更好地重构PHP代码”文章能帮助大家解决问题。#1 - 表现力这可能只是一个简单的技巧,但编写富有表现力的...
    99+
    2023-07-05
  • PHP代码重构的原则与方法
    php 重构遵循单一职责、开放-封闭、里氏替换等原则,通过提取方法、使用设计模式、借助工具和测试来实现重构。例如,将复杂函数拆分,使用依赖注入提高可测试性,实现代码的扩展性和可维护性。 ...
    99+
    2024-05-09
    php 代码重构 重构代码 lsp
  • PHP开发中如何优化代码重构和重用性
    在PHP开发过程中,代码的重构和重用性是非常重要的方面。通过优化代码的结构和设计,可以提高代码的可读性和维护性,同时还能减少代码的冗余,避免重复编写相同的逻辑。本文将介绍几种常用的优化代码重构和重用性的方法,并给出具体的代码示例。函数和类的...
    99+
    2023-10-21
    代码重构(Code Refactoring) PHP开发(PHP development) 代码重用性(Code Reu
  • 简洁版lnmp架构搭建(Linux+Nginx+Mysql+PHP)
     LNMP代表的就是:Linux系统下“Nginx+Mysql+PHP”这种网站服务器架构。 Nginx是一个高性能的HTTP和反向代理服务器, MYSQL是一个小型关系型数据库管理系统可替换成mariadb。 PHP是一种在服务器端执行的...
    99+
    2023-09-08
    php linux mysql
  • koa TS ESLint搭建服务器重构版过程详解
    目录初始化项目目录安装项目运行所需要的软件包修改package.json从.env中加载环境变量配置路径别名用法目录规范编码风格规范Eslint初始化项目目录 yarn init -...
    99+
    2022-11-13
    koa TS ESLint 搭建服务器 koa TS ESLint
  • 教你如何更好地重构PHP代码
    本篇文章给大家带来了关于php的相关知识,其中主要跟大家聊一聊什么是重构?怎么更好的重构PHP代码?感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。重构指的是在不改变原有功能的情况下,修改或者重新编写代码。下面的例子中,我将向你展示如何更...
    99+
    2023-05-14
    php
  • PHP中封装性的重构与优化技巧
    封装性是面向对象编程(OOP)的重要原则之一,它强调将数据和相关的操作封装在一个类中,通过提供公共的接口来访问和操作数据。在PHP中,我们可以通过重构和优化代码来提高封装性,使代码更加可读、可维护和可扩展。本文将介绍一些在PHP中实现封装性...
    99+
    2023-10-21
    优化 重构 封装
  • PHP中如何进行代码重构和优化?
    PHP是一门常用于Web开发的脚本语言,但在开发过程中,程序会变得越来越大、越来越复杂。在这种情况下,程序重构就显得尤为重要和必要,可以提高代码质量、减少代码维护成本、提高开发效率等。本文将介绍如何进行PHP代码重构和优化,帮助开发者提高P...
    99+
    2023-05-14
    代码重构(Code Refactoring) 性能优化(Performance Optimization) 编程技巧(P
  • PHP中如何进行代码分析和重构?
    PHP作为一门非常流行的Web开发语言,拥有丰富的开源框架和工具。然而,由于PHP比较灵活,开发人员的编码风格和习惯各不相同,可能导致代码的可读性、可维护性和安全性等方面存在一定的问题。为此,本文将着重介绍如何进行PHP代码分析和重构,来提...
    99+
    2023-05-21
    PHP 重构 代码分析
  • PHP面向对象编程:代码重构技巧
    代码重构技巧可提高 php oop 代码的可维护性和可重用性。技巧包括:提取引方法:将重复代码块提取为单独的方法。使用父类/子类:通过继承提高代码可重用性和灵活性。依赖注入:提高代码的可...
    99+
    2024-05-10
    php 面向对象 php面向对象编程
  • PHP 框架中代码重构的最佳方案
    代码重构最佳方案包含以下步骤:遵循单一职责原则,将类拆分为负责特定任务的较小单元。使用接口和抽象类定义方法签名和部分实现,实现解耦和可扩展性。松散耦合类,避免硬编码依赖,使用依赖项注入等...
    99+
    2024-05-23
    php 代码重构 mysql phpstorm
  • PHP 单元测试与重构的协同效应
    单元测试和重构协同工作,提高代码质量并加快开发流程。通过 phpunit 进行 php 单元测试有助于识别未覆盖的代码,提供更快的反馈循环,并降低重构引入错误的风险。步骤如下:1. 使用...
    99+
    2024-05-06
    php 单元测试 composer
  • 了解PHP版本NTS的含义和重要性
    PHP版本NTS的含义和重要性 PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,被用于开发动态网页。PHP的版本包括NTS(Non-Thre...
    99+
    2024-04-02
  • PHP 继承与多态:构建可扩展、可重用的软件架构
    PHP中的继承 在PHP中,继承允许你创建新的类,这些类从现有类继承属性和方法。这可以帮助你构建可扩展、可重用的软件架构。 要创建一个派生类,可以使用extends关键字。例如,以下代码创建一个名为Dog的类,继承自Animal类: c...
    99+
    2024-02-14
    PHP 面向对象 继承 多态 可扩展 可重用 软件架构
  • 了解PHP8的重要特性:掌握新版本PHP的重要变化
    PHP8的重要更新:了解新版本PHP带来的重要改变,需要具体代码示例 随着PHP 8的发布,开发人员有了一个非常重要的工具来提高他们的应用程序性能和安全性。PHP团队在这个版本中引入了许多令人兴奋的新功能和改进,包括JIT编译、...
    99+
    2024-01-13
    PHP 更新 重要改变 新版本 PHP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作