Failed to obtain JDBC Connection问题排查


背景:

看到日志报错信息如下:

## The error may exist in URL [jar:file:/app.jar!/BOOT-INF/classes!/mapper/BaTaskExecMapper.xml]
### The error may involve com.zatech.aquarius.business.dao.BaTaskExecMapper.selectByCondition
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection;
nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 5000, active 50, maxActive 50, creating 0,
runningSqlCount 50 : select * from ba_policy_query_v2 WHERE is_deleted = 'N' and tenant_id = ? and policy_id = ?

首先查看看对应的业务代码,发现有async的使用,而这是一个定时任务会扫描出大量的数据,

然后看数据库配置,发现最大的数据库连接数量是50,跟报错信息吻合,

接着又看了@async的源码,又发现代码中对async配置利用接口AsyncConfigurer进行了重写,配置的最大数量是500.

这就很明显了,没有很好的处理async线程池的配置与数据库连接池的配置

 

处理方式:调整async配置,让他的最大连接数小于数据库连接池的数量

 参考链接:

https://www.cnblogs.com/dennyzhangdd/p/9026303.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM