如何通过连接判断应用访问数据库的异常行为场景?

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报错的解决

线上技术分享的一些思考

Java判断null的几种方式

MySQL新身份验证插件caching_sha2_password

近期的热文:

"红警"游戏开源代码带给我们的震撼

文章分类和索引:

公众号1100篇文章分类和索引

以上是关于如何通过连接判断应用访问数据库的异常行为场景?的主要内容,如果未能解决你的问题,请参考以下文章

Linux 系统如何通过 netstat 命令查看连接数判断攻击

行为型设计模式之访问者模式

Spring boot中最大连接数最大线程数与最大等待数在生产中的异常场景

如何判断“移动网络数据”是启用还是禁用(即使通过 WiFi 连接)?

如何在 C# 中打开访问数据库?

DBCP连接池使用问题