- 执行
perf
命令确认是否安装,若未安装则执行(CentOS):sudo yum install perf
- 实时查看热点函数:
perf top --call-graph dwarf -p {PID}
,检查是否能看到mysqld的函数栈,类似AHI的问题比较容易看出来 - 绘制火焰图
# 如果mysqld在容器中运行
# 则拷贝mysqld的二进制文件到宿主机的相同运行路径下
docker cp {ContainerId}
# 找到mysqld进程号
ps -ef | grep mysqld
# 采样40s
perf record -F 99 -p {pid} -g --call-graph dwarf -- sleep 40
# 将二进制的 perf.data 转化为文本形式
perf script > out.perf
# 绘制火焰图
# 火焰图工具下载见文末
./FlameGraph-master/stackcollapse-perf.pl out.perf > out.folded
./FlameGraph-master/flamegraph.pl out.folded > mysqld.svg
火焰图工具:FlameGraph-master.zip