systemtap mysql_使用systemtap调试工具分析MySQL的性能

17270ce95af85a4a2d33846cd5831d99.png

SystemTap是Linux下的动态跟踪工具,可以方便的监控、跟踪运行中的程序或Linux内核操作,我们通过写SystemTap脚本(与C语言类似),编译为内核模块,然后加载到内核中运行,它带来的性能损耗比较小。

一、 分析SQL语句在执行各个阶段的消耗

比如我们想统计一句SQL在解析阶段的执行时间,可以在mysqld进程的对应parse_sql函数上加探测点,统计函数执行时间。

1-1-1.jpg

脚本如下:

1-2-1.jpg

示例如下,当前QPS约1.6W,包含了SQL执行过程中解析、redo、binlog、undo、网络、IO读、IO写上的消耗,由于涉及的函数较多,这部分后续还需要整理完善。

82a834ab446db76ea6d879195d27245a.png

也可以用来分析一句SQL的执行性能:

628a627e2579d8f24226560cffa5de3c.png

二、SQL执行时间统计分布

对于应用来说,主要关心数据库的吞吐量和响应时间,下面从应用负载的角度去衡量,服务器上当前执行SQL语句的性能分布情况。

下图是1秒聚合的SQL语句的执行时间分布图,表示大部分SQL的执行时间在128us以下:

3f9e30f0d46823d565b115adef2c33c4.png

性能开销

用sysbench做了简单压测,并发8线程时,运行stap脚本QPS从3.5W降到3.3W,性能损耗约6%;当并发32线程时,运行stap脚本QPS从9W降到7W,性能损耗约22%

36e848751dbcf4b8f7c4d9d20c1b798b.png

应用场景

Systemtap功能非常强大,可以对mysqld进程下近25000个函数以及kernel下35000个函数自定义脚本进行跟踪统计,可用来分析内存、CPU、IO、网络等各种问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值