Perf
安装perf
yum install -y perf
执行:
perf top / grep " " * -r
Strace介绍及用途
strace 是一个用于诊断,分析linux用户态进程的工具 (pstrace,losf, gbd, pstrack, pt-pmp)
MySQL启动后会启动多少线程
strace /usr/local/mysql/bin/mysqld
# /usr/local/mysql/bin/mysqld --verbose --help | grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default
操心系统查看:
ps -T `pidof mysqld`
利用pstack
pstack `pidof mysql`
推荐MySQL5.7以上的版本
select thread_id ,name from performanct_schema.threads
使用strace的正确姿势
最简单使用
strace -T -t -o /tmp/strace.log CMD
strace -T -tt CMD 2>&1 | tee /tmp/strace.log
strace -T -tt -s 100 -o /tmp/strace.log CMD
strace -T -tt -s 100 -ff -o /tmp/strace.log CMD
strace -T -tt -s 100 -e trace = XXXX -o /tmp/strace.log CMD
strace参数
-c 统计每一系统调用的所执行的时间,次数,和出错的次数等
-d 输出strace关于标准错误的调试信息
-f 跟踪由fork调用所产生的子进场
-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各
-r 打印出相对时间关于,, 每一个系统调用
-t 在输出中的每一行前加上时间信息
-tt 在输出中的每一行前加上时间信息,微秒级
-T 显示每一调用所消耗的时间,这个参数在排查性能问题时特别有用
-v 输出所有的系统调用,一些调用关于环境变量,状态,输出输入等调用由于使用频繁,默认不输出
-a column 设置返回值的输出位置,默认为40.
-e expr 指定一个表达式,用来控制如何跟踪
如果匹配conn_id 和 os_thread_id
MySQL 5.7 & 8.0
可以利用sys.processlist 和 performance_schema.threads 进行关联
select thd_id, conn_id, thread_os_id, name from sys.processlist a, performance_shcema.threads b where a.thd_id = b.thread_id and conn_id >0;
gdk attach xxxx 跟踪线程,这个动作会导致要跟的进程进行卡着
利用strace观察client的SQL执行
ls /proc/`pidof mysqld`/fd -l