返回顶部
首页 > 资讯 > 数据库 >如何分析用pt-stalk定位MySQL短暂的性能问题
  • 775
分享到

如何分析用pt-stalk定位MySQL短暂的性能问题

2023-06-06 00:06:21 775人浏览 独家记忆
摘要

本篇文章为大家展示了如何分析用pt-stalk定位MySQL短暂的性能问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。【背景】Mysql出现短暂的3-30秒的性能问题,一般的监控工具较难抓到现场,

本篇文章为大家展示了如何分析用pt-stalk定位MySQL短暂的性能问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

【背景】

Mysql出现短暂的3-30秒的性能问题,一般的监控工具较难抓到现场,很难准确定位问题原因。

对于这类需求,我们日常的mysql分析工具都有些不足的地方:

性能监控工具,目前粒度是分钟级,无法反应秒级的性能波动;

Mysql PerfORMance_schema工具采集是3秒落地10000行记录,对于QPS大于3000以上的服务器采集会丢失数据;

Performance_schema数据通常用来分析语句级的性能问题,比如CPU高消耗,扫描行数等语句问题,对于系统内部mutex,lock,thread等资源竞争的问题无法定位。

Table DML工具(5分钟粒度)

Slow Log记录大于1秒的慢查询,反应的可能是果,而不是因

MySQL Guard工具实现是依赖报警系统触发,一般对于持续在1分钟以上的问题可以抓取到现场

前面扩展过一个功能,对高CPU的监控,粒度可以到10秒左右

pt-stalk工具可以解决更细粒度的故障现场采集,守护进程的方式试用了一下,可以帮助我们解决一些问题。

【pt-stalk工具的使用】

尝试用pt-stalk工具做故障现场的快照采集

自定义脚本,定义CPU作为触发条件

function trg_plugin(){

a=$(sar 1 1 | grep -i "Average:"| awk '{print $8}');echo 100 - $a |bc

}

用pt-stalk开启守护进程,下面命令实现了用自定义的pt_cpu.sh脚本做为判断条件,当CPU的值(100-%idle)大于50,判断的间隔时间为1秒,连续3次满足条件时触发快照采集,触发后会sleep 60秒

pt-stalk --daemonize --dest=/tmp/log/pt-stalk --user= --passWord= --port= --function=/tmp/pt_cpu.sh --variable highcpu --cycles=3 --interval=1 --threshold 50 --sleep=60 --log=/var/log/pt-stalk.log

具体的参数可参考man pt-stalk。

【案例分析】

有台服务器出现短暂的线程和CPU告警的问题,现在每天在9点多都有CPU的告警,但持续时间较短,MySQL Guard工具很难采集到现场。

按照之前性能计数器反应的指标,猜测是由于binlog备份导致的IO上升,又导致了线程积压,但实际不是这个原因,binlog备份时间重合只是巧合。

在这台服务器开启pt-stalk守护进程后,今天早上CPU告警时触发了采集

如何分析用pt-stalk定位MySQL短暂的性能问题

抓取的快照信息如下:

如何分析用pt-stalk定位MySQL短暂的性能问题

依据故障快照信息,再结合slow log和performance_schema语句明细,有足够的信息可以定位出问题原因。

在9:01分CPU出现上升

如何分析用pt-stalk定位MySQL短暂的性能问题

pt-stalk采集的CPU信息记录了更细粒度,连续30秒的信息,其中连续30秒CPU sys占比都在80%以上,通常是并发线程较高,context switch过高导致的sys消耗

如何分析用pt-stalk定位MySQL短暂的性能问题

连续30秒的Threads_running确实比较高

如何分析用pt-stalk定位MySQL短暂的性能问题

进一步分析,容易找到问题原因是由于每天9:00定时job运行,有一句高并发的慢查询SQL导致了线程积压

如何分析用pt-stalk定位MySQL短暂的性能问题

慢查询SQL是由于缺失索引导致,补建索引后再观察

【pt-stalk的性能】

正常情况下守护进程的性能开销并不大,建议可以在有需要排障时再定制开启。下面是它的处理逻辑

如何分析用pt-stalk定位MySQL短暂的性能问题

上述内容就是如何分析用pt-stalk定位MySQL短暂的性能问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: 如何分析用pt-stalk定位MySQL短暂的性能问题

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

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

猜你喜欢
  • 如何分析用pt-stalk定位MySQL短暂的性能问题
    本篇文章为大家展示了如何分析用pt-stalk定位MySQL短暂的性能问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。【背景】MySQL出现短暂的3-30秒的性能问题,一般的监控工具较难抓到现场,...
    99+
    2023-06-06
  • 如何使用pt-stalk分析MySQL的性能波动
    小编给大家分享一下如何使用pt-stalk分析MySQL的性能波动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 简介 ...
    99+
    2024-04-02
  • Mysql通过explain分析定位数据库性能问题
    目录引言explain基础exlpain分析实战总结引言 数据库性能优化是每个后端程序猿必备的基础技能之一,而mysql中的explain堪称Mysql的性能优化分析神器,我们可以通过它来分析SQL语句的对应的执行计划在...
    99+
    2023-01-13
    Mysql的explain使用 Mysql的explain
  • Android性能优化之ANR问题定位分析
    目录前言1 ANR原因总结1.1 KeyDispatchTimeout1.2 BroadCastTimeout1.3 ServiceTimeout1.4 ContentProvide...
    99+
    2024-04-02
  • 如何解析MySQL性能瓶颈排查定位
    如何解析MySQL性能瓶颈排查定位,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 导读从一个现场说起,全程解析如何定位性能瓶颈。 排查...
    99+
    2024-04-02
  • MySQL 中如何定位 DDL 被阻塞的问题
    DDL 被阻塞了,如何找到阻塞它的 SQL 经常碰到开发、测试童鞋会问,线下开发、测试环境,执行了一个DDL,发现很久都没有执行完,是不是被阻塞了?要怎么解决? 包括在群里,也经常会碰到类似问...
    99+
    2017-09-02
    MySQL 中如何定位 DDL 被阻塞的问题
  • 【Mysql】MySQL 5.7中如何定位DDL被阻塞的问题
    原文地址:https://mp.weixin.qq.com/s/lD2gjyUgt4pmWdVXqqXk3w 在上篇文章《 MySQL表结构变更,不可不知的Metadata Lock 》中,我们介...
    99+
    2024-04-02
  • MySQL服务器中SSD性能问题的示例分析
    这篇文章给大家分享的是有关MySQL服务器中SSD性能问题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。【问题】我们有台HP的服务器,SSD在写IOPS约5000时,%...
    99+
    2024-04-02
  • 如何使用MYSQL性能分析器EXPLAIN
    这篇文章主要讲解了如何使用MYSQL性能分析器EXPLAIN,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。使用方法:EXPLAIN SELECT * FROM user...
    99+
    2024-04-02
  • 如何从时延毛刺问题定位到Netty的性能统计设计
    小编给大家分享一下如何从时延毛刺问题定位到Netty的性能统计设计,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、背景:通常情况下,用户以黑盒的方式使用Nett...
    99+
    2023-06-05
  • 如何分析.NET程序中的正则表达式性能问题
    这篇文章将为大家详细讲解有关如何分析.NET程序中的正则表达式性能问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。之前在web程序中错误的使用了RegexOptions.Compiled ...
    99+
    2023-06-17
  • mysql中如何使用show profiles分析sql性能
    这篇文章主要介绍了mysql中如何使用show profiles分析sql性能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Show pro...
    99+
    2024-04-02
  • 如何使用systemtap调试工具分析MySQL的性能
    这篇文章将为大家详细讲解有关如何使用systemtap调试工具分析MySQL的性能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、 分析SQL语句在执行各个阶段的消耗比...
    99+
    2024-04-02
  • Mysql的Procedure参数如何为NULL问题分析
    本篇文章给大家分享的是有关Mysql的Procedure参数如何为NULL问题分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 最近写过程...
    99+
    2024-04-02
  • MySQL如何使用profile分析语句性能消耗
    小编给大家分享一下MySQL如何使用profile分析语句性能消耗,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL使用p...
    99+
    2024-04-02
  • 如何分析VS2003程序不能调试的问题
    如何分析VS2003程序不能调试的问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。今天我和同事们研究了一下午,有个问题始终搞不定。她的VS2003程序不能调试,设置的断点不会...
    99+
    2023-06-17
  • 如何分析MySQL数据库的Web安全问题
    本篇文章为大家展示了如何分析MySQL数据库的Web安全问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。数据安全是现在互联网安全非常重要一个环节。而且一旦数据出现...
    99+
    2024-04-02
  • 如何使用MySQL进行日志分析和性能调优?
    如何使用MySQL进行日志分析和性能调优?导语:MySQL是一种常见且强大的关系型数据库管理系统,被广泛应用于各种网站和应用程序中。本文将介绍如何使用MySQL的日志功能进行分析,并提供一些性能调优的方法和示例代码。一、MySQL的日志功能...
    99+
    2023-10-22
    MySQL 性能调优 日志分析
  • 如何处理Go语言中的并发任务的监控和性能分析问题?
    如何处理Go语言中的并发任务的监控和性能分析问题?引言:随着互联网的快速发展,我们经常需要处理大量并发的任务,例如同时处理多个请求或者并行计算等。Go语言作为一门高效且简洁的并发编程语言,为我们提供了丰富的工具和库来处理并发任务。然而,在处...
    99+
    2023-10-22
    监控 分析 go语言:Go 并发监控:并发任务 性能分析:性能
  • 如何使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题
    这篇文章给大家分享的是有关如何使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在项目中用ajax异步获取数据后有时会因为数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作