我发现应用有一根访问数据库的连接有异常流量,如何判断是应用哪个逻辑导致了异常行为
先起锅烧一个数据库实例:
我们用 mysqlslap 作为应用:
假设在 MySQL 中,我们认为这根连接有异常流量:
通过 ss 找到这根连接在 mysqlslap 中的句柄号:
我们通过 strace ,输出 mysqlslap 使用这根连接的堆栈:
其中 "-e desc" 表示追踪所有跟文件句柄有关的系统调用,"-k" 表示打印堆栈
可以看到图上打印出了句柄3的一次调用,是 mysqlslap 在做 drop database 的动作
再挑一个句柄3的堆栈,是 mysqlslap 在做 create database 的动作:
找到句柄4的对应操作:
可以看到:
本次实验,我们通过连接端口号找到连接句柄,通过连接句柄,定位到连接异常流量的堆栈,能帮助大家定位到业务应用的异常逻辑。
这种方法只适用于 c/c++ 的应用,对于其他语言编写的应用,我们之后会介绍其他方法来诊断。
关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。