关于 com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 180012, active 10, maxActive 10, creating 0, createErrorCount 2 的错误我这边发现的暂时解决的方法:
修改 初始化连接池大小、最小连接数、最大连接数!!
由于项目中有大量并发及多线程处理数据加上项目刚开始设置的比较小,后来项目逐渐扩大,线程任务也加大,导致每次运行一段时间程序就会出如下错误:
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:84)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:388)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:476)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:486)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:536)
at service.GrabServer.siteCombine(GrabServer.java:145)
at service.GrabServer.siteRequest(GrabServer.java:94)
at service.GrabServer.siteRequest(GrabServer.java:62)
at service.DoGrabServer.run(DoGrabServer.java:103)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:96)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 180012, active 10, maxActive 10, creating 0, createErrorCount 2
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1866)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1494)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5058)
at com.alibaba.druid.filter.FilterAdapter.dataSource_getConnection(FilterAdapter.java:2759)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5054)
at com.alibaba.druid.filter.logging.LogFilter.dataSource_getConnection(LogFilter.java:909)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5054)
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:704)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5054)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1469)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1459)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:83)
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81)
... 16 common frames omitted
这错误简直无语;刚开始也从无法连接数据库入手,然而并没用;后来仔细研究修改数量后解决了
修改过后:
druid.datasource.initialSize=2 >> 5
druid.datasource.minIdle=5 >> 10
druid.datasource.maxActive=10 >> 50
此问题颇坑,望帮助有猿人