问
我发现利用有一根拜访数据库的连贯有异样流量,如何判断是利用哪个逻辑导致了异样行为
试验
先起锅烧一个数据库实例:
咱们用 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 的技术内容,你们还有什么想晓得的吗?连忙留言通知小编吧!