项目复盘 · 发布 2026年6月15日
上线故障复盘:一次数据库连接耗尽
系统在周一早上九点全面不可用,根因是一个没有被关闭的数据库连接。
故障发生在业务最繁忙的时段。用户打开页面一直转圈,服务端日志显示大量超时。我们从网关一路排查到数据库,最后发现问题出在一段循环逻辑里。
故障链条
一段批量处理代码在循环里创建数据库连接,但没有关闭,连接池在二十分钟内被耗尽。
连接池耗尽后,所有请求排队等待,超时时间设置为三十秒,用户侧表现为页面卡死。
监控只采集了服务器 CPU 和内存,没有采集连接池使用率,因此没有告警。
修复与改进
当天改为复用同一个连接,并在代码审查中增加资源释放检查项。
监控新增连接池活跃数、等待队列长度两项指标,设置百分之八十告警。
超时时间从三十秒降到八秒,让用户更快看到错误提示,而不是长时间等待。
故障复盘的重点不是找责任人,而是找到那条没有被监控覆盖的路径。补上它,同类问题就不会再来。