前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >数据库CPU 100% ??

数据库CPU 100% ??

作者头像
方才编程_公众号同名
发布于 2025-04-04 09:32:40
发布于 2025-04-04 09:32:40
850
举报
文章被收录于专栏:方才编程方才编程

Hello 我是方才,10人研发leader、4年团队管理&架构经验。

专注于分享成体系的编程知识、职场经验、个人成长历程等!

文末,方才送你一份优质的技术资料,记得领取哟!

今天方才给大家分享一个生产故障:2w条库表的全表扫导致数据库节点cpu使用率100%,最终导致系统故障的问题(什么?2w条就吃满了?不可能,绝对不可能!然而. . .)。

造成故障的原因很低级,但从这故障,你至少可以学到到3点:

  1. 生产级故障的定位和处理流程;
  2. 对于持续增长的表,一定要在设计阶段创建好索引;
  3. 要学会通过数值计算去正确分析问题, 而不是纯靠推测;

故障详情

某日上午,监控机器人突然告警:数据库节点CPU占比90%,然后客服务群反馈系统会时不时自动切换为运维页面(内部服务错误导致)。

通过问题定位和分析,最终故障为:2w条数据库表的全表扫描,仅仅是该表的查询就导致数据库磁盘读取量持续在 20G/min,从而导致节点磁盘读取、网络带宽激增,最终导致 数据库01节点cpu吃满,数据库服务卡死,系统崩溃。

分析过程

通过监控,逐步确认问题点:

  1. 数据库指标情况 QPS只有500左右,999延迟指标在10s左右;
  2. 数据库服务器资源情况:节点01的cpu 使用率接近 100%,其中user进程 90%以上,说明是数据库自身的问题,并非基础设施故障;(PS:因为方才也遇到是因为底层基础设施导致虚拟机CPU,被system进程吃满的情况,大家如果有兴趣,可以在评论区告诉方才,后续给安排上
  3. 通过tidb自带的面板-流量可视化,发现有异常的高亮磁盘读取,最高达 20G/min ,结合慢sql日志,发现某个sql存在全表扫,单次查询扫描的key大小为 80M,只要每分钟查询250次左右,就会达到这个读取量。
  4. ps:为什么全表扫会导致CPU飙升?核心原因在于大规模数据处理带来的计算、I/O和网络资源消耗

一些重点监控记录:

  • 节点CPU情况
image-20250402143015296
image-20250402143015296
  • 节点网络带宽情况
  • 数据库磁盘读取监控
  • 全表扫 2.1万的数据,单个sql 扫描的磁盘大小 83MB:

解决方案

通过上面的描述,是不是感觉解决过程挺顺利的、挺简单的??

然而现实是,这个问题从发现到彻底解决问题,大概用时1小时!!!

为什么这么久?因为部署实施方案不合理,虽然用到了分布式数据库,但因为服务器资源有限,TiDB节点和Tikv节点、PD节点在同一个虚拟机中,监控面板TiDB Dashboard 也在上面,这导致两个非常严重的问题:

  1. 全表扫时,TiDB、TiKV进程,压力均为剧增,服务器资源很快达到瓶颈;
  2. 数据库监控可视化面板也一起崩溃,导致只能推测是因为sql的问题导致的问题,但无法知晓是什么sql,两眼一抹黑;

最后通过关停系统,恢复数据库监控,处理问题sql,才恢复了系统。

解决方案很简单,就是根据查询和更新场景的条件,创建合适的索引。

最后,方才想说的是,后端程序员,一定要把创建索引这件事刻在骨子里!

ps:有伙伴问,这个事情最后谁背锅?背锅?什么锅?服务器性能太辣鸡了而已~ ~ ~

ps:方才很想把文章写得更加有趣,奈何能力有限,有兴趣的可以看看AI故事版,哈哈

AI故事版本

"警报!数据库CPU 100%!"上午十点十七分,当老王正喝着第三杯咖啡时,钉钉机器人突然在运维群里炸出一串血红色的告警。监控大屏上,代表数据库01节点的火焰图标正在疯狂跳动。

客服主管张姐的语音紧随其后:"所有客户页面都在跳运维提示!"技术部空气骤然凝固,键盘声此起彼伏。我盯着TiDB监控面板上诡异的折线——QPS明明只有500,999延迟却像坐火箭般窜到10秒,这就像看到高速公路车流正常,但每辆车都堵了十公里。

"见鬼,user进程吃掉90%CPU!"运维组长大刘的咆哮回荡在办公区。经验告诉我,这种时候要像法医解剖尸体般精准——快速调出流量可视化面板,果然发现有个"黑洞"在疯狂吞噬资源:某张2.1万行的表正以20G/分钟的恐怖速度读取磁盘,相当于每分钟搬空整个《魔兽世界》客户端。

"查慢SQL日志!"我声音有些发抖。当看到那个没有索引的全表扫描查询时,后背瞬间渗出冷汗——单次扫描83MB数据,每分钟执行250次就是20GB流量。这就像用消防水龙头给花盆浇水,服务器不崩才怪。

但现实远比想象魔幻:当我们试图打开TiDB Dashboard找具体SQL时,监控面板居然先于系统崩溃了!原来为了省资源,TiDB、TiKV、PD三大组件竟挤在同一台虚拟机里。"这架构简直是俄罗斯轮盘赌!"大刘气得摔了马克杯。

生死时速持续了58分钟。最终我们只能壮士断腕——紧急关停服务,在监控恢复瞬间抓出罪魁祸首:某个新上线的查询功能,开发时测试数据量小没暴露问题,上线后直接触发全表扫描风暴。

"加索引!给where条件所有字段加联合索引!"当手指重重敲下回车,监控大屏的红色警报像退潮般消散。张姐在群里发了个跪谢的表情包:"页面正常了!"

复盘会上,CTO指着事故报告的手在颤抖:"知道吗?这次全表扫描产生的数据流量,相当于每分钟传输20部高清电影。没有索引的查询,就像让数据库在沙漠里找一粒特定的沙子。"

窗外暮色渐沉,我在事故报告末尾敲下三个血泪教训:

  • 索引设计要像写遗嘱般严谨——每个字段都要考虑查询场景
  • 监控系统必须独立部署,绝不能和数据库同居
  • 性能评估要像做数学题——用磁盘读取量(行数×行大小)预判风险

当有人问起谁该背锅时,运维新人小声嘀咕:"要不说是服务器太菜?"整个会议室突然爆发出劫后余生的笑声。但在深夜的办公室里,我默默给所有核心表补上了索引——有些学费,交一次就够疼一辈子了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 方才编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL数据库CPU问题一则
Mysql 一般出现 CPU 负载过高问题的时候,我们都会去看下故障期间的慢sql日志,然后找出全表扫描、索引不合理、函数运算过多的sql,让开发同学优化下。实在不行的话,那就升级CPU硬件,替换更高频率的CPU,1路的升级成2路,2路的升级成四路。
老叶茶馆
2021/02/23
8660
MySQL数据库CPU问题一则
1.深入TiDB:初见TiDB
本篇文章应该是我研究的 TiDB 的第一篇文章,主要是介绍整个 TiDB 架构以及它能支持哪些功能为主。至于其中的细节,我也是很好奇,所以不妨关注一下,由我慢慢讲述。
luozhiyun
2021/09/14
8620
一个 Bug 改了三次,汗流浃背了。。
昨天是个汗流浃背的周一,我们的后端服务竟然在一天内三次不可用,最长的一次达到了四十分钟!到底发生了什么?且听我细说。
程序员鱼皮
2024/07/31
1310
一个 Bug 改了三次,汗流浃背了。。
新一代数据库TiDB在美团的实践
近几年,基于MySQL构建的传统关系型数据库服务,已经很难支撑美团业务的爆发式增长,这就促使我们去探索更合理的数据存储方案和实践新的运维方式。而随着分布式数据库大放异彩,美团DBA团队联合基础架构存储团队,于 2018 年初启动了分布式数据库项目。
美团技术团队
2018/11/23
8490
新一代数据库TiDB在美团的实践
TiDB 社区智慧合集丨解码 TiDB 性能谜题:让你的数据库发挥最强动力!
来自社区,回归社区。非常感谢各位 TiDBer 在之前 【TiDBer 唠嗑茶话会丨征集 TiDB 数据库性能优化大师,你是如何优化 TiDB 数据库性能的呐?】( https://asktug.com/t/topic/1005563 )里提供的各种性能优化方法。这篇帖子收集整理了大家推荐的各个方面的 TiDB 数据库性能优化方法,欢迎各位 TiDBer 持续补充更新~
PingCAP
2024/04/05
1590
TiDB 4.0 新特性前瞻(四)图形化诊断界面
某天,PongHat 公司 DBA 小王同学收到了业务侧的反馈:”小王啊,我们数据库查询现在突然变得很慢,业务已经紧急停了,能不能看下是什么情况?“
PingCAP
2020/04/02
7580
TiDB 5.4 发版丨新功能解读
TiDB 5.4 作为 2022 年开山之作,包含了许多有用有益的新功能和持续性的性能/稳定性提升。本文着重介绍重要新增功能和特性所带给用户的新体验和价值,按照以下章节来组织:
PingCAP
2022/03/04
5750
​国产数据库梳理
网上对这些数据库介绍有些误导,流传各种说法,比如:流传OB基于MySQL、GaussDB 200/300 和openGauss有啥区别,没办法谁让当前国产数据库太多...
donghy
2022/09/17
2.4K0
稳定且高性价比的大模型存储:携程 10PB 级 JuiceFS 工程实践
在过去两年多的时间里,随着 AI 大模型的快速发展,JuiceFS 在携程内部得到了越来越多 AI 用户的关注。目前,携程通过 JuiceFS 管理着 10PB 数据规模,为 AI 训练等多个场景提供存储服务。
深度学习与Python
2025/03/12
1470
稳定且高性价比的大模型存储:携程 10PB 级 JuiceFS 工程实践
从一个简单的Delete删数据场景谈TiDB数据库开发规范的重要性
前段时间上线了一个从Oracle迁移到TiDB的项目,某一天应用端反馈有一个诡异的现象,就是有张小表做全表delete的时候执行比较慢,而且有越来越慢的迹象。这个表每次删除的数据不超过20行,那为啥删20行数据会这么慢呢,我们来一探究竟。
HOHO
2021/12/04
7380
从一个简单的Delete删数据场景谈TiDB数据库开发规范的重要性
最佳实践:TiDB 业务写变慢分析处理
在日常业务使用或运维管理 TiDB 的过程中,每个开发人员或数据库管理员都或多或少遇到过 SQL 变慢的问题。这类问题大部分情况下都具有一定的规律可循,通过经验的积累可以快速的定位和优化。 但是有些情况下不一定很好排查,尤其涉及到内核调优等方向时,如果事先没有对各个组件的互访关系、引擎存储原理等有一定的了解,往往难以下手。
PingCAP
2023/09/20
3470
最佳实践:TiDB 业务写变慢分析处理
TiDB 3.0 GA Release Notes
2019 年 6 月 28 日,TiDB 发布 3.0 GA 版本,对应的 TiDB Ansible 版本为 3.0.0。
PingCAP
2019/06/29
8800
访问数据库超时问题排障
系统从圣诞节那天晚上开始,每天晚上固定十点多到十一点多这个时段,大概瘫痪1h左右,过这时段系统自动恢复。系统瘫痪时的现象就是,网页和App都打不开,请求超时。系统架构:
JavaEdge
2023/01/06
1K0
访问数据库超时问题排障
最佳实践:TiDB 业务读变慢分析处理
在使用或运维管理 TiDB 的过程中,大家几乎都遇到过 SQL 变慢的问题,尤其是查询相关的读变慢问题。读变慢的问题大部分情况下都遵循一定的规律,通过经验的积累可以快速的定位和优化,不好排查的问题需要从读 TiDB 的每个过程一一排查和分析处理。
PingCAP
2023/08/30
3020
最佳实践:TiDB 业务读变慢分析处理
MySQL痿了,放不下这么多数据!
MySQL在达到一定数据量(我的经验是3T、单表1亿)时,复杂查询会有明显的延迟。继续分库分表,会严重增加业务复杂性,尤其对很多非互联网产品来说,急需一个分布式存储。
xjjdog
2019/07/10
1.2K0
MySQL痿了,放不下这么多数据!
《性能测试》读书笔记_数据库优化
顾翔
2024/09/10
820
《性能测试》读书笔记_数据库优化
TiDB 在平安核心系统的引入及应用
所以在我们引入前从以下六个方面分别对 TiDB 进行测试验证,其中功能与架构、配置与管理、备份与恢复都是针对我们运维管理,SQL 特性、基准测试、应用场景测试则是应对业务需求和业务场景的。
PingCAP
2019/05/29
8870
国产最强开源 API 数据库,没有之一,不接受任何反驳!
作者 | 引渡 来源 | https://blog.csdn.net/yye894817571/article/details/89394355 前言 经过小编这几天的学习理解,对TiDB数据库有了一定理解,所以现在回来总结。 整体框架 TiDB主要分为3个核心组件:TiDB Server ,PD Server 和TiKV Server,还有用于解决用户复杂OLAP需求的TiSpark组件。部署一个单机版的TiDB,这三个组件都需要启动。如果用生产环境,需要使用Ansible部署TiDB集群。 一个完整的
程序猿DD
2023/04/04
8960
国产最强开源 API 数据库,没有之一,不接受任何反驳!
干货 | 分布式数据库TiDB在携程的实践
携程自2014年左右开始全面使用MySQL数据库,随着业务增长、数据量激增,单机实例逐渐出现瓶颈,如单表行数过大导致历史数据查询耗时升高,单库容量过大导致磁盘空间不足等。为应对这些问题,我们采取了诸多措施如分库分表的水平拆分、一主多从读写分离、硬件SSD升级、增加前端Redis缓存等,但同时也使得整个业务层架构更加复杂,且无法做到透明的弹性,因此开始将目光转移到分布式数据库以解决这些痛点。
携程技术
2021/12/13
8930
干货 | 分布式数据库TiDB在携程的实践
TiDB 分布式数据库在转转公司的应用实践
转转二手交易网 —— 把家里不用的东西卖了变成钱,一个帮你赚钱的网站。由腾讯与 58 集团共同投资。为海量用户提供一个有担保、便捷的二手交易平台。转转是 2015 年 11 月 12 日正式推出的 APP,遵循“用户第一”的核心价值观,以“让资源重新配置,让人与人更信任”为企业愿景,提倡真实个人交易。
PingCAP
2018/05/30
1.3K1
相关推荐
MySQL数据库CPU问题一则
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档