在一个以前的文章使用性能和火焰图像分析软件,我们看看如何生成火焰图性能输出。在这个简短的后续,我们将使用火焰图过程输出pt-pmp。火焰图没有预想的这个目的,但由于pt-pmp输出类似于折叠样品(使用的结果stackcollapse-perf.pl),我们可以利用它的功能。
主要有两个差异pt-pmp输出:
- 第一列是线程的数量相同的回溯,和
- 函数名是由一个逗号分开,而不是一个分号
此外,pt-pmp在第一行将打印日期,所以我们需要削减这部分,。
最后,在继续之前,谨慎的一个词。pt-pmp将使用广东发展银行在后台,这意味着MySQL时停止收集样品。一定要读文档在你考虑在生产环境中运行它。
安装包
我们能够使用工具之前,我们需要确保我们安装。为pt-pmp我们需要遵循在线文档安装Percona工具包或获得雷竞技下载官网最新的pt-pmp可执行:
|
1
2
3
|
壳牌
>
cd
~
/
src
壳牌
>
wget
雷竞技下载官网
com
/
得到
/
pt
- - - - - -
pmp
壳牌
>
修改文件权限
+
x
。
/
pt
- - - - - -
pmp
|
对于火焰的图表,我们可以很容易地克隆GitHub项目:
|
1
2
|
壳牌
>
cd
~
/
src
壳牌
>
git
克隆
https
:
/
/
github
com
/
brendangregg
/
FlameGraph
|
运行工具
让我们假设我们使用一个简单的pt-pmp命令如下:
|
1
|
壳牌
>
pt
- - - - - -
pmp
- - -
pid
=
美元
(
pgrep
- - - - - -
x
mysqld
)
>
pt
- - - - - -
pmp
.out
|
为了克服上述差异,我们可以使用一个短BASH一行程序,如:
|
1
|
壳牌
>
尾巴
- - - - - -
n
+
2
pt
- - - - - -
pmp
.out
|
awk
“{打印2美元,1美元}”
|
sed
- - - - - -
e
/,/,/ g’
>
pt
- - - - - -
pmp
.fgr
.out
|
这些命令是执行以下操作:
- 尾巴- n + 2 pt-pmp.out- >只是忽略第一行,日期
- awk的{打印2美元,1美元}- >是线程计数和回溯列交换
- sed - e ' s /, /, / g '- >正在改变的逗号分号
在这之后,我们可以照常使用perl脚本:
|
1
|
壳牌
>
~
/
src
/
FlameGraph
/
flamegraph
.pl
- - -
countname
=
“线程”
pt
- - - - - -
pmp
.fgr
.out
>
pt
- - - - - -
pmp
.fgr
.out
.
|
的-countname论点只是改变默认的“样本”文本,以便它更好的读每个数代表在这种背景下,什么是线程。
我们会得到预期的svg文件与火焰图向我们展示不同的堆叠和线程:

雷竞技下载官网Percona工具包附录
此外,我们可以使用pt-stalk不仅收集典型的信息操作系统——和mysql相关指标但收集堆栈跟踪,太。这意味着我们还将深入信息在服务器上发生了什么,能够做一个更好的分析。
你可以阅读更多关于如何收集这些样品在线文档。
正如前面提到的,而通过GDB痕迹被收集,该系统将停滞不前。非常小心在生产环境中运行这个!





