数据库挂了导致的生产事故
那是一个休闲的周六上午我吃着面突然看到工作群信息两条告警信息1.生产数据库异常。2.下单业务连接数据库失败......不是吧阿sir这种事都能让我碰到手中的面突然不香了。接着领导信息接踵而来我说赶紧先让运维重启数据库服务器吧我也没权限操作数据库服务器呀。说完大量吸入手中的拌面赶紧回家看看问题。业务背景数据库主从类似keepalived的机制主从都安装keepalivedkeepalived会定期检测心跳主机器挂了会进行vip飘移。简单来说就是访问43VIP就是访问41检测到41挂了就会进行VIP漂移和数据库主从切换。一开始是说vip没飘过去我就说赶紧重启41。。不然没法玩后面说已经飘过去了43是能访问的但是程序还是有问题。我还以为是43访问不了那就和程序没有关系原来还是有关系的....。然后运维重启了在线系统问题解决。问题定位因为运维重启前没有打印线程快照所以只能通过业务日志的时间去定位问题.....首先记录几个时间故障发生时间 11:36:28 - 11:54:30最后一次HTTP请求返回11:37:13路径tomcat的logs目录下localhost_access_log.2023-03-11.txt第一次系统报错时间113721路径:catalina.out确定在36分半的时候数据库已经挂了在线系统的请求全卡在请求数据库那里然后坚持了差不多一分钟就无法处理请求了。系统卡了20分钟重启后恢复。故障分析为什么获取数据库连接失败没有抛异常呢因为c3p0连接池的5秒超时被注释掉了。。为什么注释掉了呢这要追溯到上一次的生产事故了...大概就是某一天的并发很高然后系统网络又有点卡顿导致数据库连接数满了有一些连接请求数据库5秒后就抛异常了最关键的是..系统try catch把异常吞了导致没有触发重试机制。然后领导就觉得让他慢慢消费也可以就注释掉了。这其实算是一个策略数据库连接池满了到底怎么处理如果是短时间内的堵塞可以让他慢慢消费如果是长时间的堵塞就只能抛异常了。就要从结果来说还是要设置超时时间比较好就不会导致请求堵塞。。为什么会报C3P0的死锁网上搜c3p0 APPARENT DEADLOCK发现一大堆案例。我以为是因为这个死锁导致的系统崩溃结果在本地环境能复现这个问题。我是本地搭了一个数据库然后没有启动服务连接池连不上就会报这个错误。接着我尝试访问下单接口看看多久返回2分钟。。直接卡死如果设置了超时时间接着我再把本地数据库打开系统正常访问所以问题是和c3p0死锁没有关系就是请求全堵塞了。优化方案1. 设置超时时间5秒虽然可能会抛弃一部分请求但是不至于堵塞整个系统2. 业务拆分把关键业务和非关键业务分开部署现在是由于一个上报接口并发太高导致tomcat连接数和数据库连接数都用完了后期还能根据业务拆分数据库。3. 加大tomcat连接和c3p0数据库连接数现在tomcat默认200的连接数c3p0最大设置200要把这两个参数翻倍让系统再坚挺一会儿。4. 数据库主从切换时间要更迅速一点一分多钟才切换成功有点久了5. 告警出现值班运维要马上查看系统cpu和内存使用情况如果出现异常需要记录下来并打印线程快照最后重启服务。总结由于主库挂了导致4台集群无法工作就是因为一个超时时间的问题也确实不应该。只能用要多想想一些特殊的情况比如数据库挂了怎么办线程池满了怎么办http请求超时怎么办。一个大事故的发生都是多个小问题引起的。另外微服务思想也是重要的不能因为某个小业务并发高导致系统堵塞。

相关新闻

亿航智能安卓工程师岗位深度解析与面试指南

亿航智能安卓工程师岗位深度解析与面试指南

广州亿航智能技术有限公司 安卓应用开发工程师(A62592) 职位信息 职位描述: 1、参与Android相关项目的应用开发,包括无人机中控屏、云电脑、自动驾驶游艇等; 2、能独立解决项目中的问题和难题。 职位要求: 1、本科及以上学历; 2、2~5年的Android开发经验; 3、熟练使用ko…

2026/7/3 16:48:29 阅读更多 →
duckDB C++源代码解析

duckDB C++源代码解析

从 pypi.org下载 duckdb-1.4.4.tar.gz 解析 DuckDB 的 C 源代码,核心是理解其整体架构、核心模块的实现逻辑以及关键代码的设计思路。DuckDB 作为一款高性能的嵌入式分析型数据库,其 C 源码结构清晰且遵循现代 C 最佳实践,下面我会从整体架…

2026/7/3 16:48:37 阅读更多 →
实测缩短70%课件制作时间:这款AIPPT工具就是老师的大救星

实测缩短70%课件制作时间:这款AIPPT工具就是老师的大救星

实测缩短70%课件制作时间:ChatPPT引领教学效率革命 实测数据显示,使用ChatPPT制作课件,基础构建时间可缩短70%以上,这不是夸张,而是众多教育工作者的真实反馈。在2026年的今天,课件制作正经历着一场由AI驱动…

2026/7/3 16:48:36 阅读更多 →

最新新闻

银发科技与多元渠道的“价值共振”:银发智能科技产品与线上线下渠道对接会圆满落幕

银发科技与多元渠道的“价值共振”:银发智能科技产品与线上线下渠道对接会圆满落幕

​2026年6月30日下午,由AgeClub(上海银创同行科技有限公司)主办、上海市养老科技产业园协办的“数智银发,生态共赢——银发智能科技产品与线上线下渠道对接会”在产业园403报告厅圆满举行。活动汇聚了如身机器人、程天科技、小维健…

2026/7/3 18:36:40 阅读更多 →
IntelliJ UI自动化测试框架:Remote Robot原理、配置与最佳实践

IntelliJ UI自动化测试框架:Remote Robot原理、配置与最佳实践

1. 项目概述:IntelliJ UI 测试机器人如果你正在为你的 IntelliJ IDEA 插件编写功能测试,或者想自动化一些繁琐的 IDE 操作流程,那么手动点击、肉眼观察的方式很快就会让你感到力不从心。尤其是在插件功能复杂、涉及多个对话框和菜单交互时&am…

2026/7/3 18:32:39 阅读更多 →
临沂不锈钢铝蜂窝吊顶选材技术参数与性能评测要点

临沂不锈钢铝蜂窝吊顶选材技术参数与性能评测要点

在建筑装饰材料市场,临沂不锈钢铝蜂窝吊顶产品正逐步替代传统石膏板与铝扣板吊顶,成为公共空间与高端住宅装修的热门选项。这种材料本质是一种“三明治结构”,核心在于将不锈钢面板与高强度铝蜂窝芯通过专用复合工艺紧密压合。选材与评测&…

2026/7/3 18:32:39 阅读更多 →
【hive学习笔记2】

【hive学习笔记2】

笔记关联-hive学习笔记 测试Demo 1.首先在windows上(本地)创建几个文件(放一列数据),如:2.在hive建表3.上传数据上传成功显示4.测试查询hive系统架构上图所示是hive的主要组件及其与Hadoop的交互方式&#…

2026/7/3 18:30:39 阅读更多 →
act仿真,任务层

act仿真,任务层

整体分层 任务与环境层:sim_env.py(关节空间控制)、ee_sim_env.py(末端位姿控制)、scripted_policy.py(脚本策略)、assets(MuJoCo XML 场景)。数据层:record…

2026/7/3 18:30:39 阅读更多 →
英伟达RTX Spark超级芯片深度解析:AI PC如何重塑个人计算与工作流

英伟达RTX Spark超级芯片深度解析:AI PC如何重塑个人计算与工作流

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 英伟达和微软联手,这次真的把“AI PC”这个概念给做实了。不是那种在现有硬件上跑个AI助手就宣称自己是AI PC的“贴牌”…

2026/7/3 18:28:38 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻