业务场景系统故障问题排查&处理

1. 大数据并发处理事故处理-数据库的链接进程堵塞

故障现象:数据库出现并发连接故障,大量慢查询长期锁表,占用连接资源。数据库处理插入和更新操作时,通常将其置于事务中。当大量数据涌入,且查询速度较慢,新的插入和更新操作不断堆积,事务处理队列变长,数据库进程忙于应对这些操作,无法及时处理其他任务,进而引发堵塞。数据库查询速度跟不上插入和更新速度,致使数据库进程堵塞以及接口连接数据库超时。
应急措施:
  • 重启数据对接服务和数据库服务(基于 docker 容器),释放连接资源

2. 服务器系统网络故障

网络架构:服务器外网防火墙采用双机热备模式,网络链路为外网 - 防火墙 - ips - 上网行为管理 - 服务器,主副链路一致,但防火墙未做堆叠。
故障现象:因副链路上的上网行为管理设备故障,导致外网无法访问,服务器及系统网络瘫痪,5 分钟后网络恢复,链路自动切换为主链路。
排查过程:
  • 查看防火墙的路由表,摸排链路,检查物理接口,发现上网行为管理设备数据不通。
  • 通过 tracert 命令追踪路由,定位断开链路的 IP,最终确定故障原因。

3. jdbc 查询 sql 的内存泄漏故障

故障现象:服务器表单报错日志显示存在数据库连接异常和 Nacos 相关错误。数据库连接在执行 onl.data.dao.OnlDataMapper.columnListByFormCode 查询时超时(65839ms),并因 SSL 握手失败导致通信链路故障。
错误定位:
  • 影响接口:onl.data.dao.OnlDataMapper.columnListByFormCode(MyBatis 查询方法)。
  • 超时时间:65839ms(约 65.8 秒)。
异常堆栈关键信息:
  • 顶层异常:org.mybatis.spring.MyBatisSystemException(MyBatis 系统异常)。
  • 核心原因:java.sql.SQLTransientConnectionException(连接池获取连接超时)。
  • 底层原因:com.mysql.cj.jdbc.exceptions.CommunicationsException(MySQL 驱动通信故障),因 SSL 握手失败导致 SocketException: Broken pipe。
连接池与驱动状态:
  • 连接池:HikariCP(com.zaxxer.hikari.pool.HikariPool)。
  • 数据库驱动:MySQL Connector/J(com.mysql.cj.jdbc.Driver)。
异常链:连接池获取连接超时 → MySQL 驱动通信中断 → SSL 握手失败 → 管道破裂。
最终原因:前端数据导出时,有一个表单数据关联数据中间库的作业数据表,该表包含 2 万多条数据,且导出功能未作限制。由于导出数据量过大,在数据写入 excel 过程中占满内存,导致内存溢出。
posted @ 2025-05-21 17:30  2077net  阅读(23)  评论(0)    收藏  举报