JdbcTemplate获取数据库连接出现耗时很久的情况

发布于 2021-12-08 16:35:12 字数 676 浏览 813 评论 4

2018-07-28 07:15:25.837 [TRC-20180728070005-11] DEBUG [localQuartzScheduler_Worker-3] org.springframework.jdbc.datasource.DataSourceUtils :Fetching JDBC Connection from DataSource
2018-07-28 09:49:51.334 [TRC-20180728070005-11] INFO  [localQuartzScheduler_Worker-3] org.jdbcdslog.ConnectionLogger :connect to URL jdbc:oracle:thin:@10.1.19.XXX:1521:DB for user xxx


使用

DBCP 连接池。

org.springframework.jdbc.core.JdbcTemplate 执行查询方法的时候。有时候回出现获取连接居然需要两个小时的情况。请大神们帮忙出出主意。

(该现象一般都是在项目升级后出现,过一段时间可能就好了)

 

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

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

发布评论

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

评论(4

能否归途做我良人 2021-12-08 17:12:08

我猜测的原因是:比如数据库连接数配置为100,使用该数据库的其他应用已经耗尽了100个连接,导致你的这个应用获取不到新的数据库连接,甚至你的应用中连接池内的连接数为0,因此你的应用无法获取到connection,直到其他应用释放连接了连接之后,你的应用才能获取到连接。

1. 检查一下数据库中配置的最大连接数量

2. 检查所有用到该数据库的应用的连接池配置。

如果被我说中了,请采纳一下,谢谢。

谢绝鈎搭 2021-12-08 17:11:21

是spring的项目。这个主要是定时调度的模块。晚上升级后 要第二天早上6点的时候 才会执行。即使连接池未关闭,也不会存在这么久吧

绝影如岚 2021-12-08 17:10:04

升级前的项目,关闭的时候,是不是没有关闭连接池?

如果要是spring项目,确保spring关闭的时候,调用了connectionPool的close方法,否则池里的idle连接还会存活一段时间。

皇甫轩 2021-12-08 16:58:07

 

出现该问题:

1、可能是数据库连接耗尽,检查一下代码是否有数据库连接没有关闭的情况,Connection是通过JDBCTemplate get到的,看具体的代码中是否有通过jdbc方式获取过Connection 没有关闭情况,或者重复关闭Connection

2、项目升级后JAR包的兼容性问题等

3、如果可以排除不是代码的问题,重点检查连接池的配置

4、如果以上问题都可以排除,那就要重点检查是不是数据库的问题,有没有可能有别的项目也连接到了该数据库,造成的死锁而长时间获取不到Connection连接

 

建议贴出配置代码和一些数据操作类进行进一步分析

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