麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
695
2023-05-09
使用systemtap调试工具分析MySQL的性能
【工具】
SystemTap是Linux下的动态跟踪工具,可以方便的监控、跟踪运行中的程序或Linux内核操作,我们通过写SystemTap脚本(与C语言类似),编译为内核模块,然后加载到内核中运行,它带来的性能损耗比较小。
【两个应用举例】
一、 分析SQL语句在执行各个阶段的消耗
比如我们想统计一句SQL在解析阶段的执行时间,可以在mysqld进程的对应parse_sql函数上加探测点,统计函数执行时间。
脚本如下:
示例如下,当前QPS约1.6W,包含了SQL执行过程中解析、redo、binlog、undo、网络、IO读、IO写上的消耗,由于涉及的函数较多,这部分后续还需要整理完善。
也可以用来分析一句SQL的执行性能:
二、SQL执行时间统计分布
对于应用来说,主要关心数据库的吞吐量和响应时间,下面从应用负载的角度去衡量,服务器上当前执行SQL语句的性能分布情况。
下图是1秒聚合的SQL语句的执行时间分布图,表示大部分SQL的执行时间在128us以下:
【性能开销】
用sysbench做了简单压测,并发8线程时,运行stap脚本QPS从3.5W降到3.3W,性能损耗约6%;当并发32线程时,运行stap脚本QPS从9W降到7W,性能损耗约22%
【应用场景】
Systemtap功能非常强大,可以对mysqld进程下近25000个函数以及kernel下35000个函数自定义脚本进行跟踪统计,可用来分析内存、CPU、IO、网络等各种问题。
SystemTap的使用可以参考下面的文章:
1、听***CDN安防技术专家金九讲SystemTap使用技巧
2、巧用Systemtap注入延迟模拟IO设备抖动
3、MYSQL数据库网卡软中断不平衡问题及解决方案
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。