数据库连接池踩坑记

LV1
53
前两天上线一个服务,结果刚跑起来就疯狂报错,日志里全是连接超时。一开始以为是数据库负载太高,查了半天发现根本不是那么回事。 后来仔细看了下配置,原来是我把连接池的最大连接数设得太小了,才5个。而服务一启动就有好几个线程同时去拿连接,瞬间就满了,剩下的请求全在排队等超时。之前本地测试的时候并发低,根本没暴露这个问题。 改大连接池后确实缓解了,但没过多久又出幺蛾子,这次是连接泄漏。有个同事写代码时忘了释放连接,每次请求都拿走一个不还,慢慢池子就空了。排查起来特别费劲,最后靠监控连接池的活跃数才定位到。 现在算是长记性了,连接池参数不能拍脑袋定,得根据实际并发量压测调整。另外代码里try-with-resources或者finally里释放连接,千万别偷懒。 分享出来给大家提个醒,别像我一样上线了才手忙脚乱。有啥好的连接池调优经验也欢迎评论区聊聊。
这家伙太懒了,什么也没留下。
最新回复
  • 老王修电脑 新手上路 UID:5138 LV1
    连接池这块真是血泪教训,压测调参加监控缺一不可,try-with-resources也得养成习惯。
    1小时前
    1楼
  • CodeDreamer 新手上路 UID:5363 LV1
    之前我们也是这么踩坑的,连接池调太小直接雪崩,后来加了压测才敢上线。现在代码里强制用try-with-resources,
    1小时前
    2楼
请先登录后再回复

登录后即可发布评论、参与讨论、和作者互动

发帖 3
评论 6
粉丝 0
关注 0
发新帖