如何通过连接判断应用访问数据库的异常行为场景?
Posted bisal(Chen Liu)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过连接判断应用访问数据库的异常行为场景?相关的知识,希望对你有一定的参考价值。
看到技术社区的这篇文章《第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++的应用。
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,
近期更新的文章:
《MySQL的caching_sha2_password报错的解决》
《MySQL新身份验证插件caching_sha2_password》
近期的热文:
文章分类和索引:
以上是关于如何通过连接判断应用访问数据库的异常行为场景?的主要内容,如果未能解决你的问题,请参考以下文章
Linux 系统如何通过 netstat 命令查看连接数判断攻击
Spring boot中最大连接数最大线程数与最大等待数在生产中的异常场景