故障定位系列-5-DB基本故障
准备出一系列故障定位的经验分享文章
- 故障定位系列-5-DB基本故障
- 故障定位系列-6-DB调用次数故障
- 故障定位系列-7-网络延迟类故障
- 故障定位系列-8-根因接口类故障
1 故障场景
访问DB这个场景下到底有哪些故障呢?要想回答这个问题,我们必须研究下访问DB这个场景中各个环节,如下所示
主要有如下2个核心环节
- 从数据库连接池中获取连接
- 如果有空闲连接,直接返回该连接
- 创建新的连接,返回新的连接
- 超过连接限制,则锁等待空闲的连接,等待到则返回空闲连接
- 等待超时则抛出异常
- 连接池异步任务检查:对空闲连接进行有效性检查,如果不可用或者空闲时间过长则删除该连接
-
- 使用连接执行SQL命令
- 使用连接执行SQL命令
- 归还连接
-
从上述2个核心环节中,总结出常见的故障案,及其所需要数据支撑例如下所示
2 定位难点
主要有如下2个难点
- 完善的数据采集和关联
- 如何全面的覆盖上述故障案例
2.1 完善的数据采集和关联
比如案例场景:服务端mysql连接数增加限制,导致后续创建连接时失败,进而导致后续的sql都没执行
一些采集器比如OpenTelemetry和DataDog都没有去采集获取连接这一过程,那这一过程的故障案例自然是无法定位到的
比如案例场景:连接数控制的很低,在某次大查询时,并发度很高,连接数达到最大值无法创建,连接全部活跃,只能等待,进而造成整体响应时间变慢
这里就需要对某个数据库连接池的监控(比如最大连接数、活跃连接数等指标)、以及从这个连接池获取连接的监控紧密关联起来,从而达到因果可解释
比如案例场景:某次sql很慢,根本原因在于返回了1万条数据
这里就需要对每个sql的读取行数或者更新行数进行检测,这一点开源的基本都没有采集,自然也无法解释和定位
2.2 如何全面的覆盖上述故障案例
总结的最佳实践如下所示:
- 第一步:先明确区分到底是执行SQL环节有问题还是获取连接环节有问题(获取连接环节有问题,有可能是执行SQL耗时过长造成长期占用连接不释放,进而引发获取连接一直等待)
- 第二步:如果是执行SQL环节有问题
- 明确是哪种类型的问题:错误突增?耗时突增?读取行数突增?更新行数突增?
- 明确是哪个维度的问题:整个database级别?某个sql类型级别?某个sql级别?
-
- 第三步:如果是获取连接环节有问题
- 明确是哪种类型的问题:错误突增?耗时突增?等待连接?
- 明确是哪个连接池的问题:是不是连接池参数设置不合理?
-
3 实战案例
我们到RootTalk Sandbox上进行上述故障场景的复现。
RootTalk Sandbox是一个故障演练和定位的系统,可以进行多种故障场景的复现,目前开放注册。
地址:https://sandbox.databuff.com
针对访问DB的2个核心环节,分别注入如下2个故障
- DB客户端-读取行数-所有实例-耗时故障:某个SQL读取行数增多引发的耗时故障
- DB客户端-Connection-所有实例-耗时故障:从DB连接池中获取连接的耗时故障
3.1 故障注入-DB客户端-读取行数-所有实例-耗时故障
注入后等待2~3分钟,可直接点击跳转到Databuff的故障定位平台
3.2 故障定位-DB客户端-读取行数-所有实例-耗时故障
定位结果如下所示:
明确给出了是DB行数的问题,点击根因节点
先解释了某个SQL耗时突增,然后又进一步解释了这个SQL耗时突增的原因是SQL读取行数增多导致的,点击上述连接可进一步验证
3.3 故障注入-获取连接耗时突增的故障
注入后等待2~3分钟,可直接点击跳转到Databuff的故障定位平台
3.4 故障定位-获取连接耗时突增的故障
定位结果如下所示:
明确给出了这个数据库连接池获取连接耗时突增的问题,点击链接,可进一步验证结果
的确是获取连接的耗时突增了

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从硬盘爆满到 GitHub 封号,一位前端开发者的开源历险记
前段时间,我结识了一位前端工程师「1024小神」。他的“战友”是一台 MacBook Air M3(8G+256GB),原本用来开发网页、小程序,绰绰有余。 然而,他的噩梦始于老板轻描淡写的一个需求。 某天,老板让他开发 Windows 软件。他二话没说,装了虚拟机、Win11、Flutter...硬盘瞬间少了 100GB。 一个月后,老板又让他开发 iPhone 和 iWatch 程序。他再次接下所有,安装了 Xcode、SwiftUI...硬盘再减 128GB。 接下来,还有用 Cocos 开发直播间小游戏、把 CRM 系统做成跨平台应用等各种需求接踵而至。 直到那天,小神的电脑屏幕上弹出一个冰冷的提示——“您的磁盘空间不足”。 这台曾经与他并肩作战的 MacBook Air,如今仅剩 300M 空间。此刻它像一个被塞满的行囊,发出了无声的悲鸣。 那个深夜,小神望着屏幕,陷入了沉思。一个前端工程师,为何要活成一个“八爪鱼”,被迫装上所有平台的开发环境?难道就没有一种更优雅、更轻量的方式,去实现所谓的“跨平台”吗? 他试图在开源社区中寻求破解之道,但始终没有找到完全契合需求的项目。如...
- 下一篇
专访|冯雷:走完“最后一公里”路,去无限接近“终极模型”
当你打开航旅纵横查看年度飞行报告,一年飞行足迹瞬间具象化,屏幕中往返城市相连,数字跃动,勾勒出喜怒哀乐。交织轨迹见证时光,也留存生活鲜活瞬间。 “超越全国用户数 99.99%”“飞行时长 174 小时 56 分钟”……这些数据背后,隐现人工智能时代痛点:如何让数据洪流落地场景又能守护隐私堤坝? 杭州拓数派科技发展有限公司创始人兼CEO冯雷以“平行空间”思维破题,对数据计算、垂类模型与智能体做出了全新的探索—— 将原本数据计算系统中杂糅的存储与计算模块分离,打造数据与算力两大彼此独立的“平行空间”。用户初始数据一次进入数据计算系统即实现“隐身”,保证数据安全,“可用不可见,可信计算。” 冯雷以《哈利波特》的魔法列车为喻:“我们要做AI产业的霍格沃茨特快列车。用户数据进入站台的魔法空间后,外界只知道列车到达终点,却永远无法追踪行驶轨迹,这就是数据可用不可见的理念。” 成立于2021年,拓数派是中国极少数全人民币投资的出生即准独角兽企业。创始人冯雷毕业于美国人工智能专业多次排名第一的卡内基梅隆大学,是全球知名开源数据库Greenplum中国的创始人。 说起创业历程,冯雷指尖划过实验室墙上的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8编译安装MySQL8.0.19
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 2048小游戏-低调大师作品
- Windows10,CentOS7,CentOS8安装Nodejs环境