使用pt-stalk诊断MySQL问题

标签: mysql | 发表时间:2012-07-22 13:02 | 作者:admin
出处:http://blog.haohtml.com

在MySQL服务器出现短暂(5~30秒)的性能波动的时候,一般的性能监控工具都很难抓住故障现场,也就很难收集对应较细粒度的诊断信息。另外,如果这种波动出现的频率很低,例如几天才一次,我们也很难人为的抓住现场,收集数据。这正是pt-stalk所解决的问题。

pt-stalk是 Percona-Toolkit的一部分(其前身是 Aspersa的一部分)。安装Percona-Toolkit后,可以通过man pt-stalk了解如何使用该工具,本文的介绍是man pt-stalk的一个子集,强烈建议直接阅读man pt-stalk。额外的,本文将提供pt-stalk示例命令可供参考。

1. 使用pt-stalk
pt-stalk --collect-tcpdump --function status \
--variable Threads_connected --threshold 2500 \
--daemonize -- --user=root --password=YOURPASSWORD

上面的命令表示,让pt-stalk后台运行(--daemonize),并监视SHOW GLOBAL STATUS中的Threads_connected状态值,如果该值超过2500,则触发收集主机和MySQL的性能、状态信息。pt-stalk会每隔一秒检查一次状态值,如果连续5次满足触发条件,则开始收集。

--collect-tcpdump表示除了收集基本信息外,还将额外使用tcpdump收集当时的网络包,类似的还可以使用--collect-gdb等。

2. pt-stalk如何连接MySQL

在上面的命令中参数,"-- --user=root --password=YOURPASSWORD"表示,将使用"--"后面的所有参数用于mysql和mysqladmin命令,所以这里确保你给出正确的用户名和密码。下面是man pt-stalk中给出的语法:

SYNOPSIS
Usage: pt-stalk [OPTIONS] [-- MYSQL OPTIONS]

看到前面的[OPTIONS]是pt-stalk使用的参数,[-- MYSQL OPTIONS]是mysql和mysqladmin使用的参数。

3. pt-stalk的工作状态

pt-stalk是一个后台程序,默认我们可以通过文件/var/log/pt-stalk.log,查看pt-stalk的运行状态:

tail -f /var/log/pt-stalk.log
2012_06_05_00_00_35 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_36 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_37 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_38 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_39 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_40 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_41 Check results: Threads_connected=1641, matched=no

你还可以通过参数--log指定一个你希望的log目录和文件。

4. pt-stalk收集的性能和状态数据

默认pt-stalk将收集的数据放在目录/var/lib/pt-stalk下,你可以使用参数--dest指定你希望的目录。下面是一个pt-stalk触发收集后的数据文件:

pt-stalk数据

这些数据都是原始数据,我们可以根据这些来分析当时MySQL或者主机是否有异常。

5. pt-stalk的触发条件

在上面的示例中触发参数是:"--function status --variable Threads_connected --threshold 2500",表示MySQL状态值Threads_connected超过2500时触发数据收集。常用的触发条件还可以使用Threads_running等。

另外还可以使用SHOW PROCESSLIST的中的结果触发,例如"--function processlist --variable State --match statistics --threshold 10"表示,show processlist中State列的值为statistics的线程数超过10则触发收集。

6. 一些其他有用的参数

--iterations:该参数指定pt-stalk在收集几次故障现场后就退出。默认pt-stalk会一直运行

--run-time:触发收集后,该参数指定收集 多长时间的数据。默认是30秒

--sleep:为防止一直触发收集数据,该参数指定在某次触发后,必须sleep一段时候才继续观察并触发收集。默认是300秒

--interval:默认情况pt-stalk会每隔一秒检查一次状态数据,判断是否需要触发收集。该参数指定间隔时间,默认是1秒。

--cycles:默认情况pt-stalk只有连续观察到五次状态值满足触发条件时,才触发收集。该参数控制,需要连续几次满足条件,收集被触发,默认是5次。

参考文献:man pt-stalk;man percona-toolkit

摘自: http://www.orczhou.com/index.php/2012/06/mysql-troubleshooting-with-pt-stakl/

您可能也喜欢:

mysql中Table is read only的解决办法

mysql各种HA方案

使用mysql-proxy实现mysql读写分离

图解"How MySQL Replication Works"
无觅

相关 [pt stalk 诊断] 推荐:

使用pt-stalk诊断MySQL问题

- - haohtml's blog
在MySQL服务器出现短暂(5~30秒)的性能波动的时候,一般的性能监控工具都很难抓住故障现场,也就很难收集对应较细粒度的诊断信息. 另外,如果这种波动出现的频率很低,例如几天才一次,我们也很难人为的抓住现场,收集数据. 这正是pt-stalk所解决的问题. pt-stalk是 Percona-Toolkit的一部分(其前身是 Aspersa的一部分).

"PT下载解决你的高清片源难题

- jacky - Cao Liu
不少朋友都购买了高配置的看高清视频的电脑或者在家里组建了HTPC,但是有一个很现实的问题摆在了大家眼前,高清的视频怎么下. 目前很多朋友获得高清视频的途径无非就是电驴或者BT,但是这些传统的下载方式存在着种子少、速度慢的问题,也许一部热门影片可以全速下载,但那些较老的片子绝大部分却只能以数十K的速度下载,甚至无种子可用下载不了,原因很简单很少有人会为非热门的数十G的高清视频做种.

MySQL 主从延迟监控脚本(pt-heartbeat)

- - CSDN博客数据库推荐文章
    对于MySQL数据库主从复制延迟的监控,我们可以借助percona的有力武器pt-heartbeat来实现. pt-heartbeat通过使用时间戳方式在主库上更新特定表,然后在从库上读取被更新的时间戳然后与本地系统时间对比来得出其延迟. 本文主要是通过脚本来定期检查从库与主库复制的延迟度并发送邮件,供大家参考.

pt-query-digest查询日志分析工具

- - 数据库 - ITeye博客
pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析. 可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化.

如何诊断CDN故障

- - 火丁笔记
某项目使用CDN做文件下载服务,最近不时有网友反馈下载出错,因为CDN是第三方提供的,且节点众多,所以诊断起来有点麻烦,必须想想招儿. 首当其冲的问题是如何确认CDN有哪些节点. 幸运的是通过 阿里测提供的服务,我们能拿到这个IP列表,当然这个IP列表不可能百分百完整,不过应该包含了大部分的节点,有兴趣的可以参考 百度的JQuery CDN例子.

JVM诊断调优CheatSheet

- - ImportNew
使用top去获取进程cpu使用率;使用/proc文件查看进程所占内存. 查看类的一些信息,如字节码的版本号、常量池等. 查看进程的gc情况. jstat -gcutil [pid] (显示总体情况). jstat -gc [pid] 1000 10(每隔1秒刷新一次 一共10次). 查看jvm内存使用状况.

初步诊断你的 GC

- - IT瘾-dev
本文是好友阿飞写的,并且经过作者同意发的原创. 阿飞Javaer,转载请注明原创出处,谢谢. JVM的GC机制让Java程序员省去了自己垃圾回收的烦恼,大大提高了生产效率. 但是正因为JVM垃圾回收机制足够优秀,导致很多Java程序员对JVM这个黑盒了解甚少,很多人没有去了解它,很多人也没机会去了解它.

网站诊断之建议篇

- - Google 黑板报 - Google (谷歌)中国的博客网志,走近我们的产品、技术和文化
发表者:谷歌中文搜索质量团队. 转载自: 谷歌中文网站管理员博客. 发布时间:2012年1月18日 上午 10:46:00. 几周之前,我们曾邀请非营利性的公益网站站长向我们的搜索质量团队提交他们的网站,参加我们的在线网站诊断活动. 感谢积极参加此次活动的公益网站站长. 现在我们根据提交的网站,总结出了一些需要改进的地方,并提供了一些建议以及您可以从谷歌获得的资源.

ThreadSafe:诊断并发问题的利器

- - Java译站
听到ThreadSafe这个东西我的第一反应就是, ”天啊,又出了一个静态代码分析工具”. 在内部开发中引入了像PMD或者FindBugs这类的工具,又花了不少时间优化成零警告后,我感觉已经不再需要其它的工具了. ThreadSafe这个工具跟别的代码分析工具一样,但有一点不同,它更专注于Java开发中一个非常重要的领域——并发.