Percona Toolkit使用测试(14)PT-PMP

pt-pmp执行两项任务:获取堆栈信息,并总结堆栈信息。如果在命令行上给出一个文件,该工具将跳过第一步,只聚合文件。

为了总结堆栈跟踪,该工具从堆栈的每一层提取函数名(符号),并将它们与逗号组合起来。它对输出中的每个线程都这样做。然后,它将相似的线程排序在一起,并计算每个线程的数量,根据调用频繁程度从高到低打印出来。

pt-pmp是一个只读工具。但是,收集GDB堆栈跟踪是通过将GDB附加到程序并从所有线程打印堆栈跟踪来实现的。这将在一段时间内冻结程序,一秒钟左右或更多 (在程序中有很多内存和线程的非常繁忙的系统会消耗更长时间 ) 。在该工具作为MySQL分析工具的默认使用中,这意味着当该工具运行时MySQL将无响应,但是如果你的MySQL数据库现在已经停止响应了,那么可以使用pt-pmp去跟踪MySQL的堆栈信息,来分析他为什么hang住。 除了冻结服务器之外,还存在一些服务器崩溃的风险,或者在GDB从服务器分离之后性能很差。

查看pt-pmp的源代码,我们可以发现pt-pmp本身是一个shell脚本,底层调用的是gdb,所以我们需要事先安装gdp。

参数说明
- -binary
指定哪个进程进行跟踪,如果不指定,他默认去寻找mysqld进程。因此pt-pmp也可以跟踪其他进程。
- -help
帮助并退出
- -interval
每次跟踪的间隔时间,默认为0
- -iterations
总共的跟踪次数,默认为跟踪1次
- -lines
pt-pmp在第二步聚合的时候只打印相应分类的几个方法,默认会全部打印出来,你可以让他只打印前面N个
- -pid
创建pid文件
- -save-samples
将跟踪结果保存到文本文件中
- -version
显示版本并退出

例:
[root@bogon tmp]# pt-pmp --binary mysqld --lines 1
Wed Jun 19 18:16:34 CST 2019
12 pthread_cond_wait
10 __io_getevents_0_4(libaio.so.1)
9 pthread_cond_timedwait
2 poll(libc.so.6)
2 nanosleep(libpthread.so.0)
1 sigwait(libpthread.so.0)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值