事故02分析报告:慢查询+逻辑耦合导致订单无法生成
一、事故背景与现象
时间范围
- 2022年2月3日 18:11~18:43(历时32分钟)
受影响系统
| 系统名称 | 角色 | 影响范围 |
|---|---|---|
| dc3 | 订单数据库主库 | 订单生成、事务回滚 |
| dc4 | 订单数据库从库 | 数据同步、容灾切换 |
业务影响
- 核心业务:手机点餐、C扫B支付订单无法推送至POS系统,购物车初始化失败
- 用户指标:下单成功率下跌至85%(基线99.9%)
- 技术指标:
-
数据库主库CPU峰值98%,连接池耗尽
-
swan_saga_local_branch_transaction表插入RT飙升至1.8s -
数据库主库因慢查询触发级联雪崩,sjstrmsodc4主库发生ORC切换失败,连接池耗尽。
-
订单号生成服务与事务回滚逻辑共用集群,故障扩散至上游服务(odc.orderprocess、odc.menu等)。
-
其他服务访问sjstrmsodc4开始出现获取连接超时
-
二、处理流程与关键操作
时间线
| 时间节点 | 关键操作 | 数据指标/效果 |
|---|---|---|
| 18:11 | 上游服务触发超时告警 | 接口超时率75%(持续15分钟) |
| 18:12 | DBA定位慢SQL(SQL ID:2171f2ab) | 慢查询数1200+/分钟 |
| 18:15 | 启动跨团队协作(DBA/SRE/Swan) | 参与团队:DBA 3人、SRE 2人、研发4人 |
| 18:23 | dc4主库ORC切换失败 | 主从延迟峰值90秒 |
| 18:27 | 分阶段限流(50%→10%→0%) | QPS从5000降至200 |
| 18:29 | PT-KILL清理慢查询 | 终止慢查询4500+条,CPU回落至40% |
| 18:42 | 修复索引(新增idx_xid_branch) | 查询耗时从1.8s降至5ms |
| 18:43 | 放开限流,服务恢复 | 推单成功率恢复至99.9% |
核心处置手段
-
限流与熔断
- 动态调整SQL流量,优先保护核心链路
- 使用
pt-kill终止慢查询,释放连接池资源
-
索引修复
- 修正联合索引顺序为
(xid, branch_id),消除全表扫描 - 使用
gh-ost工具执行在线DDL,主从同步延迟归零
- 修正联合索引顺序为
-
业务补偿
- 人工补推**15%**异常订单(依赖商家手动处理)
三、根因分析
直接原因
| 分类 | 描述 |
|---|---|
| 索引设计缺陷 | swan_saga_local_branch_transaction表索引顺序错误(idx_bid_xid),导致DELETE语句全表扫描 |
| 业务逻辑耦合 | 订单生成与事务回滚共享数据库集群,缺乏物理隔离 |
间接原因
| 分类 | 描述 |
|---|---|
| 巡检机制失效 | 全表扫描检测阈值过高(1000行),未覆盖高频低行数场景 |
| 预案缺失 | 无数据库故障降级工具,依赖人工补偿(耗时2小时以上) |

四、改进措施与验证
技术优化
-
索引治理
- 建立联合索引顺序审核规则,覆盖**100%**高频操作表
- 重建
swan_saga系列表索引,查询性能提升90%
-
熔断升级
- 开发多维度限流工具(SQL ID + 服务标签),限流覆盖率提升至95%
架构解耦
| 措施 | 预期效果 | 进度 |
|---|---|---|
| 订单生成服务独立部署 | 降低跨服务影响80% | 2022Q3落地 |
| 事务回滚表迁移 | 与核心业务物理隔离 | 已完成 |
监控增强
- 全链路追踪:部署慢SQL实时指纹分析,响应时间>50ms自动告警
- 动态阈值调整:全表扫描阈值降至500行,覆盖高频场景
五、系统性改进模型
| 改进维度 | 具体措施 | 预期收益 |
|---|---|---|
| 技术债务治理 | 索引顺序强制审核(Code Review) | 减少**70%**索引缺陷引发的故障 |
| 容量韧性 | 核心集群QPS弹性扩容(基线×200%) | 峰值承载能力提升至1.2万QPS |
| 组织协同 | DBA-研发-Swan联合巡检机制 | 高风险SQL漏检率下降85% |
| 故障自愈 | 自动化补偿工具 + 无损降级策略 | MTTR从32分钟缩短至8分钟 |
六、经验总结
技术视角
- 索引即资产:高频表需定期审计索引命中率,纳入发布流程卡点
- 容量兜底:核心服务预设弹性扩缩容策略,避免级联故障
管理视角
- 跨团队协作:建立常态化巡检机制,提前暴露耦合风险
- 预案演练:通过真实场景验证工具有效性(如限流覆盖率)
最终结论:通过索引治理、逻辑解耦与自动化工具建设,系统性降低数据库级联故障风险,保障订单核心链路SLA≥99.99%。
相关文章:
事故02分析报告:慢查询+逻辑耦合导致订单无法生成
一、事故背景与现象 时间范围 2022年2月3日 18:11~18:43(历时32分钟) 受影响系统 系统名称角色影响范围dc3订单数据库主库订单生成、事务回滚dc4订单数据库从库数据同步、容灾切换 业务影响 核心业务:手机点餐、C扫B支付订单无法推送至…...
vant2 vue2 两个输入框联动验证遇到的问题
需求是两个输入框,一个输上限A,一个输下限B <van-fieldv-model"formData.upperLimit"name"upperLimit"type"number"label"上限"required:formatter"formatter"/><van-fieldv-model"for…...
硬件工程师入门教程
1.欧姆定律 测电压并联使用万用表测电流串联使用万用表,红入黑出 2.电阻的阻值识别 直插电阻 贴片电阻 3.电阻的功率 4.电阻的限流作用 限流电阻阻值的计算 单位换算关系 5.电阻的分流功能 6.电阻的分压功能 7.电容 电容简单来说是两块不连通的导体加上中间的绝…...
如何使用Docker搭建哪吒监控面板程序
哪吒监控(Nezha Monitoring)是一款自托管、轻量级的服务器和网站监控及运维工具,旨在为用户提供实时性能监控、故障告警及自动化运维能力。 文档地址:https://nezha.wiki/ 本章教程,使用Docker方式安装哪吒监控面板,在此之前,你需要提前安装好Docker. 我当前使用的操作系…...
python-leetcode 45.二叉树转换为链表
题目: 给定二叉树的根节点root,请将它展开为一个单链表: 展开后的单链表应该使用同样的TreeNode,其中right子指针指向链表中的下一个节点,而左子指针始终为空 展开后的单链表应该与二叉树先序遍历顺序相同 方法一:二叉树的前序…...
uni小程序wx.switchTab有时候跳转错误tab问题,解决办法
在一个子页面里面使用uni.switchTab或者wx.switchTab跳转到tab菜单的时候,先发送了一个请求,然后执行跳转到tab菜单,但是这个时候,出错了........也是非常的奇怪,不加请求就没问题......但是业务逻辑就是要先执行某个请…...
【一起学Rust | 框架篇 | Tauri2.0框架】在Tauri应用中设置Http头(Headers)
文章目录 前言一、配置准备1. 检查版本2. 使用条件3. 支持的请求头(并不是全部支持) 二、使用步骤1. 如何配置header2. 框架集成1. 对于Vite系列、Nuxt、Next.js这种前端框架Vite系列框架Angular系列框架Nuxt系列框架Next.js系列框架 2. 对于Yew和Leptos…...
STM32G473VET6 在 Keil MDK 下手动移植 FreeRTOS 指南
下面将详细介绍如何在 Keil MDK 环境下将 FreeRTOS 手动移植到 STM32G473VET6 微控制器上。内容涵盖工程创建、获取源码、文件组织、移植层适配、测试任务编写以及编译调试等步骤。 1. 工程搭建(Keil 项目创建) 创建基础工程:首先准备一个基…...
波导阵列天线 学习笔记11双极化全金属垂直公共馈电平板波导槽阵列天线
摘要: 本communicaition提出了一种双极化全金属垂直公共馈电平板波导槽阵列天线。最初提出了一种公共馈电的单层槽平板波导来实现双极化阵列。此设计消除了传统背腔公共馈电的复杂腔体边缘的必要性,提供了一种更简单的天线结构。在2x2子阵列种发展了宽十…...
DeepSeek-R1自写CUDA内核跑分屠榜:开启GPU编程自动化新时代
引言 在AI领域,深度学习模型的性能优化一直是研究者们关注的核心。最近,斯坦福和普林斯顿的研究团队发现,DeepSeek-R1生成的自定义CUDA内核不仅超越了OpenAI的o1和Claude 3.5 Sonnet,还在KernelBench框架中取得了总排名第一的好成…...
001 Kafka入门及安装
Kafka入门及安装 文章目录 Kafka入门及安装1.介绍Kafka的基本概念和核心组件 2.安装1.docker快速安装zookeeper安装kafka安装 添加topic删除topickafka-ui安装 2.Docker安装(SASL/PLAIN认证配置-用户名密码) 来源参考的deepseek,如有侵权联系…...
2024 年出现的 11 大数据收集趋势
数据收集趋势的出现是对技术进步、企业需求和市场波动的回应,我们对 2025 年的预测涵盖了所有方面。物联网和人工智能等前沿技术将改变组织收集和处理数据的方式,法规将促使它们更加细致地对待数据,而消费者对增强现实和虚拟现实的兴趣将为数…...
动态内容加载的解决方案:Selenium与Playwright对比故障排查实录
方案进程 2024-09-01 09:00 | 接到亚航航班数据采集需求 2024-09-01 11:30 | 首次尝试使用Selenium遭遇Cloudflare验证 2024-09-01 14:00 | 切换Playwright方案仍触发反爬机制 2024-09-01 16:30 | 引入爬虫代理IPUA轮换策略 2024-09-02 10:00 | 双方案完整实现并通过压力测试故…...
OSPF BIT 类型说明
注:本文为 “OSPF BIT 类型 | LSA 类型 ” 相关文章合辑。 机翻,未校。 15 OSPF BIT Types Explained 15 种 OSPF BIT 类型说明 Rashmi Bhardwaj Distribution of routing information within a single autonomous system in larger networks is per…...
java excel xlsx 增加数据验证
隐藏表下拉框 // 创建隐藏工作表存储下拉框数据String hiddenSheetName "HiddenSheet"System.currentTimeMillis();Sheet hiddenSheet workbook.createSheet(hiddenSheetName);//设置隐藏sheetworkbook.setSheetHidden(workbook.getSheetIndex(hiddenSheetName), …...
React + TypeScript 数据血缘分析实战
React TypeScript 数据血缘分析实战 目录 技术选型与架构设计核心概念解析基础场景实现 场景一:visx库基础血缘图实现场景二:React-Lineage-DAG企业级方案场景三:动态数据源与复杂交互 TypeScript类型系统深度优化性能优化与工程化实践开源…...
魔搭 ModelScope 模型下载
wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run sudo sh cuda_12.6.0_560.28.03_linux.run# pip -V pip 24.3.1 # pip3 -V pip 24.3.1设置pip镜像源 # pip config set global.index-url https://mirrors.…...
WorldQuant Brain的专属语言——Fast Expression
使用brain需要的编程语言 在使用BRAIN平台时往往不需要事先有编码背景,因此小白也能很快对其上手,但有经验的程序员来讲,该平台暂时没有禁止API通信低强度进行时的程序化访问(但是非常不好意思😣怎么访问我没找到&…...
在低功耗MCU上实现人工智能和机器学习
作者:Silicon Labs 人工智能(AI)和机器学习(ML)技术不仅正在快速发展,还逐渐被创新性地应用于低功耗的微控制器(MCU)中,从而实现边缘AI/ML解决方案。这些MCU是许多嵌入式…...
MSSQL2022的一个错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序
MSSQL2022导入Excel的一个错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序 一、导入情况二、问题发现三、问题解决 最近在安装新版SQLServer SSMS 2022后,每次导入Excel都会出现错误提示:未在本地计算机上注册“Microsoft.…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
