第50问:从连接判断应用访问数据库的异常行为
2023-06-13 09:16:30 时间
问
我发现应用有一根访问数据库的连接有异常流量,如何判断是应用哪个逻辑导致了异常行为
实验
先起锅烧一个数据库实例:
我们用 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 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!
相关文章
- MongoDB在数据库管理中的运用(mongodb的应用)
- 查看MySQL数据库端口号的方法(mysql怎么查看端口)
- Oracle数据库触发器类型及其应用(oracle触发器类型)
- 初步探索Oracle数据库中触发器类型(oracle触发器类型)
- 深度探析Oracle系统数据库的优势与应用(oracle系统数据库)
- 学习使用SQLserver促进数据库开发进步(学会SQLserver)
- 掌握mysql数据库关系图的创建与查询(mysql数据库关系图)
- SQL Server数据库修复:解决数据损坏问题(sqlserver修复’)
- cmd成功进入MySQL数据库的操作技巧(cmd进入到mysql)
- Medoo 极速搭建 Oracle 数据库应用(medoo oracle)
- 借助ES搜索Oracle数据库轻松获取信息(es搜索oracle)
- 范式常见问题MySQL 数据库设计中常以三范式为基础,但实际应用中也经常面临各种与反三范式有关的挑战和问题,请看重点分析
- 探讨 MySQL 数据库中一列变量的应用与优势(mysql 一列的变量)
- Oracle 数据库中的文本技术应用(oracle中包含文字)
- Oracle EF框架为数据库应用开发提供新解决方案(oracle EF框架)
- SQLSERVER数据库开发之存储过程应用