Druid一段时间没操作再操作时,查询很慢,并且随着次数增加,报连接溢出

发布于 2021-12-03 22:55:28 字数 628 浏览 676 评论 7

@fei33423  你好,想跟你请教个问题:我数据库使用的是oralce,连接池使用druid,一段时间未操作,testWhileIdle验证会出现超过20秒,主要在skip not validate connection,并且伴随着物理连接未关闭。导致越积越多,最终报连接溢出:com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 100, maxActive 100。麻烦大神点拨下。

我maxActive配置的是100,每次慢查情况出现的时候,就有连接未关闭,导致越积越多,最终超过100个,报溢出

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

倾城泪 2021-12-09 16:04:42

可是,我这边物理连接关闭越积越多,最张导致报连接溢出

梦里兽 2021-12-09 15:54:19

回复
@JumpAlang : 如果是开发代码,方便做测试的话,对真实的数据库数据源DataSource代理一下,然后通过Wrapper对物理Connection包装一下,在连接泄露以后,通过代码去检查一下,这几个泄露的数据库连接都是什么状态,再往后可能就需要跟druid的源码了。。。。

卸妝后依然美 2021-12-09 14:13:01

回复
druid,配置不是有个removeAbandon参数,可以移除长时间未被关闭的连接,然后记录日志。我配置了这个根本没用

想挽留 2021-12-09 13:29:33

回复
@JumpAlang : 我的堆积到了900,然后就出现了响应超级慢的情况(10分钟吧),不知道怎么搞

网名女生简单气质 2021-12-09 13:12:39

网上的回答:

数据库服务器的防火墙会自动中断一段时间未活动的TCP连接,相当于中断了数据库物理连接,Druid连接池中维护的数据库逻辑连接尝试与数据库服务器进行被服务器单方面中断的连接进行TCP通信,会失败(Druid把异常捕获了。只返回false,然后Druid再新开一个TCP连接),重要的是这个失败的过程耗时很长

无边思念无边月 2021-12-09 09:44:19

这个靠谱

苍暮颜 2021-12-07 06:45:07

我在DruidAbstractDataSource的testConnectionInternal(DruidConnectionHolder holder, Connection conn)下了断点,发现skip not validate connection,是因为拋出底层异常是socket read time out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文