服务公告

服务公告 > 常见问题 > 数据库连接数波动异常:重连风暴

数据库连接数波动异常:重连风暴

发布时间:2026-03-01 15:00
## 症状 数据库连接数曲线不再平稳,呈现锯齿状剧烈波动:短时间内大量新建连接涌入,随后集体断开,几分钟后又一轮,周期性发作。伴随应用日志里的连接超时与数据库负载尖刺,业务在尖刺时段响应抖动。单看每一时刻的连接数都不算离谱,但曲线形态明显不健康,把时间窗口拉长到小时级,锯齿就藏不住了。 ## 定位 锯齿形态的源头是集体重连。正常状态连接建立后长期保持,曲线近乎水平;网络一次抖动或数据库一次瞬时压力,触发大量连接同时断开,客户端的重试逻辑又不约而同立即重连,瞬时并发把数据库再压一次,断开重连循环往复,风暴成形。核对应用的重试配置即可确认:重试间隔短于数据库恢复所需时间、失败后全部立即重连、没有随机化退避,三个特征凑齐,风暴的机制就清楚了。 ## 解决 治本在重连策略,三件套配上:重试上限设小,连续失败到次数就熔断等待;重试间隔指数增长,从秒级起步翻倍递增;间隔加随机抖动,把集体重连错开到时间轴上。连接池层面加预热与懒恢复机制,避免瞬时创建大批连接。数据库侧把连接错误相关的等待超时适当放宽,给抖动留缓冲。三件套的本质是把同步的失败响应打散成错峰的重试序列,风暴失去同时性就刮不起来。 ## 预防 重试参数的默认值审查列入代码评审,瞬时重试无退避的实现一律打回。故障演练里专门设计网络抖动场景,观察连接曲线的收敛形态,锯齿快速衰减才算合格。连接新建速率纳入告警,速率异常往往比连接总数更早暴露风暴苗头。顺云云服务器上部署多实例应用时,把重连参数的团队默认值做成配置模板,别让每个服务自定义出一套风暴配方。