MySQL 的几种调式分析工具,常用的有如下4种:
- pstack
- gdb
- strace
- perf
如下分别介绍之。
-
pstack
获取堆栈信息
问题线程的定位
负载较低
mysql_pid=23632
pstack $mysql_pid>pstack.info
pt-pmp对堆栈信息排序
pt-pmp pstack.info | less
也可以直接执行pt-pmp
pt-pmp --pid 4522 -
gdb
堆栈跟踪
等待分析
侵入性大
mysqld_pid=23632
gdb -p $mysqld_pid
(gdb) info thread 显示运行的所有线程
(gdb) thread 4 切换到某个线程
bt 显示调用栈
注意
pstack 和gdb都可以获取堆栈信息,区别是gdb是交互式的(需要手动退出),pstack是快照形式(执行3s自动退出)
对mysqld使用gdb后,已经建立的连接无法再执行语句,新连接无法建立
- strace
查看进程的系统调用信息
负载较高
查看系统调用
strace -cp $mysqld_pid
查看执行语句
mysqld_pid=4522
strace -f -F -ff -o mysqld-strace -s 1024 -p $mysqld_pid
find ./ -name “mysqld-strace” -type f -print |xargs grep -n “SELECT.FROM”
查看读写的文件
strace -o /tmp/strace_output.txt -T -tt -f -e trace=read,open -p “mysqld_pid” - perf
进程内部函数调用情况
负载较低
mysqld内部函数整体消耗情况
perf top -p 23632
记录所有内部函数调用
该命令会输出记录到perf.data中
perf record -p 23632
解析并查看perf.data内容
perf script -i perf.data>perf.log && less perf.log
文章结束。
以下是个人微信公众号,欢迎关注:

889

被折叠的 条评论
为什么被折叠?



