当前位置: 首页 > news >正文

数据库挂了导致的生产事故

那是一个休闲的周六上午,我吃着面,突然看到工作群信息两条告警信息:
1.生产数据库异常。
2.下单业务连接数据库失败......

不是吧阿sir,这种事都能让我碰到,手中的面突然不香了。接着领导信息接踵而来,我说赶紧先让运维重启数据库服务器吧,我也没权限操作数据库服务器呀。说完大量吸入手中的拌面,赶紧回家看看问题。

业务背景


数据库主从类似keepalived的机制,主从都安装keepalived,keepalived会定期检测心跳,主机器挂了会进行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

第一次系统报错时间:11:37:21
路径:catalina.out

确定在36分半的时候,数据库已经挂了,在线系统的请求全卡在请求数据库那里,然后坚持了差不多一分钟就无法处理请求了。系统卡了20分钟,重启后恢复。

故障分析

为什么获取数据库连接失败没有抛异常呢?

因为c3p0连接池的5秒超时被注释掉了。。为什么注释掉了呢,这要追溯到上一次的生产事故了...

大概就是某一天的并发很高,然后系统网络又有点卡顿,导致数据库连接数满了,有一些连接请求数据库5秒后就抛异常了,最关键的是..系统try catch把异常吞了,导致没有触发重试机制。

然后领导就觉得让他慢慢消费也可以,就注释掉了。

这其实算是一个策略,数据库连接池满了到底怎么处理,如果是短时间内的堵塞,可以让他慢慢消费,如果是长时间的堵塞,就只能抛异常了。

就要从结果来说还是要设置超时时间比较好,就不会导致请求堵塞。。

为什么会报C3P0的死锁?

网上搜c3p0 APPARENT DEADLOCK发现一大堆案例。我以为是因为这个死锁导致的系统崩溃,结果在本地环境能复现这个问题。我是本地搭了一个数据库,然后没有启动服务,连接池连不上就会报这个错误。

接着我尝试访问下单接口,看看多久返回

2分钟。。直接卡死

如果设置了超时时间

接着我再把本地数据库打开,系统正常访问,所以问题是和c3p0死锁没有关系,就是请求全堵塞了。

优化方案

  1. 1. 设置超时时间5秒,虽然可能会抛弃一部分请求,但是不至于堵塞整个系统

  2. 2. 业务拆分,把关键业务和非关键业务分开部署,现在是由于一个上报接口并发太高导致tomcat连接数和数据库连接数都用完了,后期还能根据业务拆分数据库。

  3. 3. 加大tomcat连接和c3p0数据库连接数,现在tomcat默认200的连接数,c3p0最大设置200,要把这两个参数翻倍,让系统再坚挺一会儿。

  4. 4. 数据库主从切换时间要更迅速一点,一分多钟才切换成功有点久了

  5. 5. 告警出现值班运维要马上查看系统cpu和内存使用情况,如果出现异常需要记录下来,并打印线程快照,最后重启服务。

总结

由于主库挂了导致4台集群无法工作,就是因为一个超时时间的问题,也确实不应该。只能用要多想想一些特殊的情况,比如数据库挂了怎么办,线程池满了怎么办,http请求超时怎么办。一个大事故的发生都是多个小问题引起的。另外微服务思想也是重要的,不能因为某个小业务并发高导致系统堵塞。

http://www.jsqmd.com/news/311364/

相关文章:

  • Codeforces Round 1068 (Div. 2) D,E 题解
  • Educational Codeforces Round 129 (Rated for Div. 2) F. Unique Occurrences 线段树分治
  • Android System UI/Launcher开发工程师职位深度解析
  • 2026年1月电缆生产厂家推荐:电缆生产厂家排名、知名的电缆生产厂家推荐盘点名单
  • 深入解析:Android开发工程师的核心能力与实战面试指南
  • 2026年质量好的数码组合柔版印刷机/标签柔版印刷机信誉优质供应参考(可靠)
  • 亿航智能安卓工程师岗位深度解析与面试指南
  • 2026年评价高的亚克力浴缸/浴缸厂家口碑推荐汇总
  • 2026年知名的卫星式轮转印刷机/标签轮转印刷机厂家推荐与选择指南
  • 铁路地铁电力电缆生产厂家推荐:中低压、变频、聚乙烯绝缘、聚氯乙烯绝缘电缆生产厂家名单(2026年)
  • 2026年1月矿山煤矿电力电缆生产厂家推荐:中低压、变频、聚乙烯绝缘电缆
  • 2026年1月中国电缆一线品牌推荐:轨道交通、石油石化、矿山煤矿电缆国内一线品牌盘点
  • 2026年1月轨道交通电力电缆生产厂家推荐:中低压、变频、变频、聚乙烯绝缘电缆生产厂家
  • 2026年靠谱的酒店照明系统/酒店照明设计优选服务榜
  • 2026年口碑好的工程浮箱钢模板/圆柱钢模板厂家选购参考汇总
  • 2026年专业的酒店灯具工程采购/酒店灯具主流品牌排行榜
  • px4+ubuntu22.04+ros2开发记录
  • 2026年比较好的建筑3D打印构件/建筑3D打印技术厂家选择参考建议
  • 2026年热门的办公设备塑料齿轮/汽车塑料齿轮厂家推荐与选择指南
  • 2026年靠谱的大连考公线下课/大连考公线上课学员好评榜
  • OCR文字识别组件的深度解析:从传统方法到Vision Transformer与Diffusion的融合
  • 2026年评价高的安全气囊发生器外壳钢管/钢管厂家专业度参考(精选)
  • 2026年知名的大连公考银行编/大连公考省考班学员选择榜
  • 2026年热门的五金冲压弹片成型/精密加工五金冲压优质供应商推荐参考
  • 2026年质量好的气泡轻质土/高强度气泡轻质土厂家热销推荐
  • 2026年知名的全屋净水设备/全屋净水过滤系统用户口碑认可参考(高评价)
  • 2026年知名的反渗透净水器/净水器制造厂家
  • 2026年比较好的高压水阻起动柜/高压励磁起动柜值得信赖厂家推荐(精选)
  • 2026年口碑好的拉伸弹簧/触指弹簧高评价厂家推荐
  • 2026年评价高的路基回填泡沫混凝土/泡沫混凝土厂家选购完整指南