第50问:从连接判断应用访问数据库的异常行为

在这里插入图片描述

我发现应用有一根访问数据库的连接有异常流量,如何判断是应用哪个逻辑导致了异常行为

实验

先起锅烧一个数据库实例:

我们用 mysqlslap 作为应用:

假设在 MySQL 中,我们认为这根连接有异常流量:

通过 ss 找到这根连接在 mysqlslap 中的句柄号:

我们通过 strace ,输出 mysqlslap 使用这根连接的堆栈:

其中 “-e desc” 表示追踪所有跟文件句柄有关的系统调用,“-k” 表示打印堆栈

可以看到图上打印出了句柄3的一次调用,是 mysqlslap 在做 drop database 的动作

再挑一个句柄3的堆栈,是 mysqlslap 在做 create database 的动作:

找到句柄4的对应操作:

可以看到:

  • 句柄3对应的连接的作用是 create/drop database ,进行测试前后的构建和清理工作。

  • 句柄4对应的连接的作用是 run task ,对数据库施加任务压力,我们从数据库上看到的异常流量,就是来自于这个逻辑。

本次实验,我们通过连接端口号找到连接句柄,通过连接句柄,定位到连接异常流量的堆栈,能帮助大家定位到业务应用的异常逻辑。

这种方法只适用于 c/c++ 的应用,对于其他语言编写的应用,我们之后会介绍其他方法来诊断。


关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值