JdbcTemplate获取数据库连接出现耗时很久的情况
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我猜测的原因是:比如数据库连接数配置为100,使用该数据库的其他应用已经耗尽了100个连接,导致你的这个应用获取不到新的数据库连接,甚至你的应用中连接池内的连接数为0,因此你的应用无法获取到connection,直到其他应用释放连接了连接之后,你的应用才能获取到连接。
1. 检查一下数据库中配置的最大连接数量
2. 检查所有用到该数据库的应用的连接池配置。
如果被我说中了,请采纳一下,谢谢。
是spring的项目。这个主要是定时调度的模块。晚上升级后 要第二天早上6点的时候 才会执行。即使连接池未关闭,也不会存在这么久吧
升级前的项目,关闭的时候,是不是没有关闭连接池?
如果要是spring项目,确保spring关闭的时候,调用了connectionPool的close方法,否则池里的idle连接还会存活一段时间。
出现该问题:
1、可能是数据库连接耗尽,检查一下代码是否有数据库连接没有关闭的情况,Connection是通过JDBCTemplate get到的,看具体的代码中是否有通过jdbc方式获取过Connection 没有关闭情况,或者重复关闭Connection
2、项目升级后JAR包的兼容性问题等
3、如果可以排除不是代码的问题,重点检查连接池的配置
4、如果以上问题都可以排除,那就要重点检查是不是数据库的问题,有没有可能有别的项目也连接到了该数据库,造成的死锁而长时间获取不到Connection连接
建议贴出配置代码和一些数据操作类进行进一步分析