乐趣区

关于strace:第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 的技术内容,你们还有什么想晓得的吗?连忙留言通知小编吧!

退出移动版