Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

获取连接超时 #2130

Closed
mychao opened this issue Nov 24, 2017 · 88 comments
Closed

获取连接超时 #2130

mychao opened this issue Nov 24, 2017 · 88 comments

Comments

@mychao
Copy link

mychao commented Nov 24, 2017

@wendal 请帮忙看下,谢谢。
数据库运行正常,但是突然出现了获取连接超时的异常,异常堆栈信息:
Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 5, maxActive 200, creating 1
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1422)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1241)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1221)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1211)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:105)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)

@wendal
Copy link
Contributor

wendal commented Nov 24, 2017

maxWait太小了, 改成15000吧

@mychao
Copy link
Author

mychao commented Nov 24, 2017

@wendal maxWait是获取连接的最大等待时间,获取连接的时间应该很快吧,设置15000是不是太大了?

@wendal
Copy link
Contributor

wendal commented Nov 24, 2017

建oracle连接的时候,有时候很慢

@huangmaomao
Copy link

我这边也经常出现这个问题,怎么解决的

@huangmaomao
Copy link

@wendal ERROR http-nio-8080-exec-105 org.hibernate.engine.jdbc.spi.SqlExceptionHelper - wait millis 60015, active 2, maxActive 100, creating 1
用的是MySQL Server 5.7

@wendal
Copy link
Contributor

wendal commented Nov 25, 2017

@huangmaomao 是不是网络波动? mysql在同一个机器嘛?

话说,为啥这个issue会@我的呢??

@wendal
Copy link
Contributor

wendal commented Nov 25, 2017

其实你们想at的人是 @wenshao 吧, 虽然我也给druid提交过代码...

我做的是nutz系列的java框架 例如 https://github.com/nutzam/nutzhttps://github.com/nutzam/nutzboot

@huangmaomao
Copy link

额,是在同一台机器上面@wenshao

@wenshao
Copy link
Member

wenshao commented Nov 25, 2017

creating=1标识,在建立物理连接中,是不是数据库有什么问题导致建立连接很慢?

@huangmaomao
Copy link

数据库和服务是在一台机器上面的,数据可以正常连接访问,服务重启之后就可以拿到连接

@huangmaomao
Copy link

@wenshao 网络带宽是2M的,之前有时候出现这个问题,我把版本更新到1.1.1之后用了二周,今天就频繁出现这个问题,重启服务也不行,数据库可以正常访问

@wenshao
Copy link
Member

wenshao commented Nov 25, 2017

买一个阿里云的rds试试?

@huangmaomao
Copy link

主要是什么原因引起的呢?这个是客户的阿里云服务器,要知道原因才好给客户建议

@wenshao
Copy link
Member

wenshao commented Nov 25, 2017

看不出,从报错看到的信息是物理连接在创建中

@lg84300329
Copy link

我出现这个问题!!连接池配置如下:
1 #连接池配置
initialSize: 110
minIdle: 110
maxActive: 1000
maxWait: 5000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
removeAbandoned: true
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 50
2 报错信息如下:
Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 5258, active 120, maxActive 1000, creating 0
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1379) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1198) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4619) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.filter.logging.LogFilter.dataSource_getConnection(LogFilter.java:874) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4615) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.filter.FilterAdapter.dataSource_getConnection(FilterAdapter.java:2745) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4615) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.filter.FilterAdapter.dataSource_getConnection(FilterAdapter.java:2745) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4615) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:666) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4615) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1176) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1168) ~[druid-1.1.3.jar!/:1.1.3]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:104) ~[druid-1.1.3.jar!/:1.1.3]
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) ~[spring-jdbc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ~[spring-jdbc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:84) ~[mybatis-spring-1.3.0.jar!/:1.3.0]
at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:70) ~[mybatis-spring-1.3.0.jar!/:1.3.0]
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77) ~[mybatis-3.4.0.jar!/:3.4.0]
at sun.reflect.GeneratedMethodAccessor188.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:434) ~[mybatis-spring-1.3.0.jar!/:1.3.0]
at com.sun.proxy.$Proxy93.selectOne(Unknown Source) ~[?:?]
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:167) ~[mybatis-spring-1.3.0.jar!/:1.3.0]
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53) ~[mybatis-3.4.0.jar!/:3.4.0]
at com.sun.proxy.$Proxy102.findUserByPhone(Unknown Source) ~[?:?]
at com.qtec.router.server.service.user.RouterUserService.findUserByPhone(RouterUserService.java:70) ~[classes!/:1.0-Dev]
3 还有这样的错误信息:

Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 5258, active 120, maxActive 1000, creating 0

The error may exist in com/qtec/router/server/dao/QtecRouterUserMapper.java (best guess)

The error may involve com.qtec.router.server.dao.QtecRouterUserMapper.findUserByPhone

The error occurred while executing a query

Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 5258, active 120, maxActive 1000, creating 0

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77) ~[mybatis-3.4.0.jar!/:3.4.0]
at sun.reflect.GeneratedMethodAccessor188.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:434) ~[mybatis-spring-1.3.0.jar!/:1.3.0]
at com.sun.proxy.$Proxy93.selectOne(Unknown Source) ~[?:?]
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:167) ~[mybatis-spring-1.3.0.jar!/:1.3.0]
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) ~[mybatis-3.4.0.jar!/:3.4.0]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53) ~[mybatis-3.4.0.jar!/:3.4.0]
at com.sun.proxy.$Proxy102.findUserByPhone(Unknown Source) ~[?:?]
at com.qtec.router.server.service.user.RouterUserService.findUserByPhone(RouterUserService.java:70) ~[classes!/:1.0-Dev]
at com.qtec.router.server.service.user.RouterUserService$$FastClassBySpringCGLIB$$9941f5fd.invoke(<generated>) ~[classes!/:1.0-Dev]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669) ~[spring-aop-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at com.qtec.router.server.service.user.RouterUserService$$EnhancerBySpringCGLIB$$ee6d5337.findUserByPhone(<generated>) ~[classes!/:1.0-Dev]
at com.qtec.router.server.service.user.RouterUserService$$FastClassBySpringCGLIB$$9941f5fd.invoke(<generated>) ~[classes!/:1.0-Dev]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669) ~[spring-aop-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at com.qtec.router.server.service.user.RouterUserService$$EnhancerBySpringCGLIB$$95b89e73.findUserByPhone(<generated>) ~[classes!/:1.0-Dev]
at com.qtec.router.server.controller.login.LoginController.login(LoginController.java:99) ~[classes!/:1.0-Dev]
at com.qtec.router.server.controller.login.LoginController$$FastClassBySpringCGLIB$$263125b4.invoke(<generated>) ~[classes!/:1.0-Dev]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) ~[spring-aop-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at com.alibaba.druid.support.spring.stat.DruidStatInterceptor.invoke(DruidStatInterceptor.java:72) ~[druid-1.1.3.jar!/:1.1.3]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) ~[spring-aop-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at com.qtec.router.server.controller.login.LoginController$$EnhancerBySpringCGLIB$$108f9516.login(<generated>) ~[classes!/:1.0-Dev]
... 68 more

4 数据库本身设置的最大连接数为3000:SHOW VARIABLES like 'max_con%' 结果是3000

@lg84300329
Copy link

补充信息,当前使用版本是:

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.3</version>
    </dependency>

@lg84300329
Copy link

补充信息:数据库服务器打印出来的错误日志是:
2017-11-28T03:26:05.495523Z 20555 [Note] Aborted connection 20555 to db: 'xxxt' user: 'xxx' host: '192.168.92.53' (Got an error reading communication packets)

@lg84300329
Copy link

@wenshao 麻烦帮忙看一下

@wenshao
Copy link
Member

wenshao commented Nov 28, 2017

看是数据库挂了哦

@lg84300329
Copy link

lg84300329 commented Nov 29, 2017

@wenshao 数据库是正常服务啊,后续的请求没有问题!为什么连接数远没有达到最大值,拿不到空闲的连接,没有新建,而是等待空闲的

@chengfengjie
Copy link

chengfengjie commented Dec 27, 2017

org.apache.ibatis.exceptions.PersistenceException:

Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 0, maxActive 20, creating 1

The error may exist in class path resource [huijinhang/hms/mapper/externalagency/externalAgency_mapper.xml]

The error may involve huijinhang.hms.repository.externalagency.ExternalAgencyRepository.getLastUpdateTimeForExternalAgencyTask

The error occurred while executing a query

Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 0, maxActive 20, creating 1

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:82)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)

active为0,还是抛出拿不到连接的异常,就突然出现那么几十次,然后又没出现过了

@VEMTK
Copy link

VEMTK commented Mar 10, 2018

@lg84300329 能问下这个是怎么解决的吗?

@Jerrrylin
Copy link

一樣的錯誤,wait millis 60000, active 0, maxActive 20, creating 0] with root cause,求問怎麽解決的。我連的是oracle。
(Ps:oracle被人搞過之後就出了問題了,之前可以訪問的接口都訪問不了,有沒有可能是oracle庫的問題)

@geeksun
Copy link

geeksun commented Jun 8, 2018

同样遇到了active 0,Could not get JDBC connection的问题,数据库为postgresql,druid 版本:1.0.20。

@skomen
Copy link

skomen commented Aug 14, 2018

@geeksun 你这个解决了吗。遇到一样的问题了。

@KangXuechao
Copy link

网络断开 , 数据库重建连接池的代码在哪个地方呢

@TianYu-hpu
Copy link

com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60004, active 150, maxActive 150
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1155)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:977)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544)
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:662)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4540)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:955)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:947)

@HaimingLau
Copy link

Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 30000, active 0, maxActive 10, creating 1
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:289)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:447)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:277)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)

@HelodieJaqueline
Copy link

@wenshao我这边也经常报这类错误,请问有什么解决办法或者是排查思路吗?谢谢了
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 10000, active 2, maxActive 500, creating 1, runningSqlCount 2

###还有一个经常报Communications link failure错误,这个是网络问题吗?
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.GeneratedConstructorAccessor122.newInstance(Unknown Source) ~[?:?]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_79]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_79]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:627) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1013) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:790) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:44) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at sun.reflect.GeneratedConstructorAccessor118.newInstance(Unknown Source) ~[?:?]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_79]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_79]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:148) ~[druid-1.1.0.jar:1.1.0]
at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:217) ~[druid-1.1.0.jar:1.1.0]
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:142) ~[druid-1.1.0.jar:1.1.0]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1466) ~[druid-1.1.0.jar:1.1.0]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1529) ~[druid-1.1.0.jar:1.1.0]
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2178) [druid-1.1.0.jar:1.1.0]
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2914) ~[mysql-connector-java-5.1.34.jar:5.1.34]
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:559) ~[mysql-connector-java-5.1.34.jar:5.1.34]
... 18 more

@gm100861
Copy link

Caused by: org.apache.ibatis.exceptions.PersistenceException:
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConne
ctionException: Could not get JDBC Connection; nested exception is com.alibaba.d
ruid.pool.GetConnectionTimeoutException: wait millis 60011, active 0, maxActive
20, runningSqlCount 1 : SELECT d.option_name AS meno,dt.print_time printTime,dt.
line_group_id lineGroupId,dt.id FROM t_delivery_time dt LEFT JOIN t_dictionary d
 ON d.id = dt.line_group_id where dt.`auto_print_status`=0
runningSqlCount 1 : select `status` from t_printer_conf where type_code=?
### The error may exist in class path resource [mapper/PrinterConfMapper.xml]
### The error may involve com.tramy.print.mapper.PrintConfMapper.queryPrinterLin
eGroup
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not
get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTim
eoutException: wait millis 60011, active 0, maxActive 20, runningSqlCount 1 : SE
LECT d.option_name AS meno,dt.print_time printTime,dt.line_group_id lineGroupId,
dt.id FROM t_delivery_time dt LEFT JOIN t_dictionary d ON d.id = dt.line_group_i
d where dt.`auto_print_status`=0
runningSqlCount 1 : select `status` from t_printer_conf where type_code=?

同样遇到这个问题,怎么解决

@Johnson-Jia
Copy link

Johnson-Jia commented Mar 30, 2020

又出现连接获取失败的问题了。
Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 5000, active 2, maxActive 100, creating 1, createElapseMillis 9432014

详情:
数据库负载突然彪高,大量sql被阻塞,数据库进行重启然后数据库负载降低。 但是其他应用程序druid连接池 持续报错 连接获取超时。 数据库负载很低,连接很少, Druid 活跃连接 只有2 但是获取不到新连接, 数据库挂掉后 druid连接池 不会自动恢复吗?

@ruanjianershu
Copy link

我这也频繁的报这个问题
Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 50, maxActive 50, creating 0
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1682)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1395)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1375)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1365)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:109)
at org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource.getConnection(AbstractRoutingDataSource.java:169)
at com.dangdang.ddframe.rdb.sharding.jdbc.core.connection.ShardingConnection.getConnection(ShardingConnection.java:102)
at com.dangdang.ddframe.rdb.sharding.jdbc.core.statement.ShardingPreparedStatement.generatePreparedStatement(ShardingPreparedStatement.java:177)
at com.dangdang.ddframe.rdb.sharding.jdbc.core.statement.ShardingPreparedStatement.route(ShardingPreparedStatement.java:156)
at com.dangdang.ddframe.rdb.sharding.jdbc.core.statement.ShardingPreparedStatement.execute(ShardingPreparedStatement.java:139)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
at com.suixingpay.takin.mybatis.interceptor.MonitorInterceptor.intercept(MonitorInterceptor.java:54)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at com.sun.proxy.$Proxy254.query(Unknown Source)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
at com.suixingpay.takin.mybatis.dynamicdatasource.interceptor.DynamicDatasourceInterceptor.intercept(DynamicDatasourceInterceptor.java:61)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at com.sun.proxy.$Proxy253.query(Unknown Source)
at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
at com.suixingpay.takin.mybatis.page.PageInterceptor.intercept(PageInterceptor.java:84)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at com.sun.proxy.$Proxy253.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:76)
at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)

@lvsj
Copy link

lvsj commented Jul 14, 2020

我也遇到过同样的问题,最后定位到是因为VPN开了全局代理导致的。

@giveme0101
Copy link

晚上预警出现问题,导致服务直接挂掉,报错日志:Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 10000, active 2, maxActive 200, creating 1, createElapseMillis 28505, runningSqlCount 1,

此外经常性出现:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

配置:

initial-size: 5
      min-idle: 5
      max-active: 200
      max-wait: 10000
      #test-while-idle: true
      #validation-query: SELECT 1 FROM DUAL
      test-on-borrow: false
      test-on-return: false
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 15000
      default-auto-commit: true
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 30000

@digdeep126
Copy link

Caused by: org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 5, maxActive 5, creating 0
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:289)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:461)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:277)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
at com.diantu.service.FfmxDownTaskServiceImpl$$EnhancerBySpringCGLIB$$916a9b39.syncFFMXDaoChuExcel()
at sun.reflect.GeneratedMethodAccessor638.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:265)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:257)
... 3 more
Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 5, maxActive 5, creating 0
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1510)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1253)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1233)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1223)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:90)
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:246)

同样遇到这个问题。。。。
先升级mysql驱动试试。

@digdeep126
Copy link

升级 mysql-connector-java 到5.1.48,升级druid到 1.1.24版本之后,已经稳定运行了三周,再也没有出现这个错误了!!!!!

@KANLON
Copy link
Contributor

KANLON commented Oct 13, 2020

我解决了这个问题,我这里的理由是由于设置了dataSource.setBreakAfterAcquireFailure(true);这个配置导致了。由于数据库网络或者其他原因导致服务连接不上数据库几秒,然后由于上面那个配置了true之后,如果数据库连接池发现链接不上,就会彻底将该数据源标识为不可用,导致一直获取不到的链接。

设置这个的原因是我有些数据库是链接不上的,但是我不想总是打印出错误日志,druid这里的默认策略是,如果连不上数据库,会每隔30秒就是链接一次数据库

可以通过不断查询要链接的数据库,然后,中途停止数据库服务的,1,2分钟后,然后再启动起mysql,然后观察是否会获取不到链接的。

我觉得,即使设置了setBreakAfterAcquireFailure(true)这个,但是获取数据库链接池链接的时候应该也再去链接一下mysql是否能链接成功,而不是直接标识该数据源不可用了,然后不返回数据源链接了,希望druid那里能修改一下

// 获取连接失败将会引起所有等待获取连接的线程异常,但是数据源仍有效的保留,并在下次调用getConnection()的时候继续尝试获取连接 。如果设为true,那么尝试指定次数后获取连接失败后该数据源将申明已经断开并永久关闭.默认为false 
dataSource.setBreakAfterAcquireFailure(true);

版本信息

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.24</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.48</version>
        </dependency>

@digdeep126
Copy link

digdeep126 commented Nov 3, 2020

迁移服务器,又出现报错:
com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 5, maxActive 5, creating 0
出门左转 HikariCP: https://github.com/brettwooldridge/HikariCP
真香!

@15168326318
Copy link

druid 1.2.1,还是报错:
Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 65632, active 30, maxActive 30, creating 0
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1722)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1402)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5059)
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:680)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5055)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1380)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1372)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:109)

@15168326318
Copy link

@ruanjianershu 你解决了吗?

@15168326318
Copy link

@wendal 你确定是资源不足导致的问题吗 ?

@BoYiZhang
Copy link

BoYiZhang commented Dec 4, 2020

image

+1

@ChenYuPan
Copy link

遇到同样的问题+1 呀

@BoYiZhang
Copy link

image

+1

My reason is because the connection information is wrong, resulting in

@YLDarren
Copy link

druid 1.1.1 报,Oracle库,数据库、机器网络都是没问题的

Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 30000, active 1, maxActive 200, creating 0

请大佬们帮忙分析下

@Johnson-Jia
Copy link

@YLDarren 开启 druid监控观察下看看

@RekaDowney
Copy link

image
超诡异的,明明配置maxActive为5,但这里的 activeCount 居然是 7,然而我用 jmap 查看存活的 ConnectionImpl 却只有 1 个。这些统计数据感觉就不太准确(另一个pod的 activeCount 始终为0,但我已经发请求查询数据库并成功返回了,jmap 返回 4 个连接)。

druid 版本为 1.2.3

@ruanjianershu
Copy link

@ruanjianershu 你解决了吗?

可以尝试将druid改成非公平模式

@z672355589
Copy link

druid

我也遇到同样的问题,在启动的时候会报错
aused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1500, active 7086, maxActive 50, creating 0
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1730)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1397)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5059)
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:680)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5055)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1374)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1366)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:79)
版本:1.1.20

@z672355589
Copy link

.

重启之后就好了

@leter
Copy link

leter commented Jun 10, 2021

我oracle数据库,经常偶发性的出现这个问题,每次重启之后又变好了。搞不清楚是应用的问题还是数据库的问题,应用和数据库我每个礼拜重启一次的。看数据库的awr日志又好像是更新的时候导致锁表的问题。真的不知道怎么解决

@yobuke
Copy link

yobuke commented Jun 15, 2021

@wenshao 我们场景是使用druid连接池获取connection后使用jdbc对mysql读写,因为这样比较轻量。我们不希望滥用数据库连接,因为设置的maxActive是50。计划任务会起100个线程,每个线程从datasource获取connection,执行完批量任务后会调用connection.close()返还连接给连接池。但是现在的问题是执行完50个线程之后,会报getConnectionTimeoutException,我理解应该是前面的50个线程还没有释放连接,导致后面的线程获取不到。请问是什么参数设置的不对吗,或者需要设置什么参数来解决这个问题?

这种情况只能增加maxActive

@ypcfly
Copy link

ypcfly commented Aug 12, 2021

遇到相似的问题,我们mysql是16C32G的配置,数据库最大连接 1500,waitTime_out是600。druid配置maxActive 500,经常报:
Cause: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 6000, active 5, maxActive 2000, creating 1, createElapseMillis 60231这个错。到现在也不知道是什么问题??有没有解决的。配置如下:

QQ截图20210812154855

@leter
Copy link

leter commented Aug 12, 2021

我oracle数据库,经常偶发性的出现这个问题,每次重启之后又变好了。搞不清楚是应用的问题还是数据库的问题,应用和数据库我每个礼拜重启一次的。看数据库的awr日志又好像是更新的时候导致锁表的问题。真的不知道怎么解决

找到原因了,是应用的问题,应用在某个地方卡住一直不提交事务,我建议各位先排除应用的问题,然后设置一下数据库的超时执行时间,一旦超时就返回异常,保证不会一直占用链接,一般能解决这类问题。

@peak-wind
Copy link

Cause: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 0, maxActive 100, creating 1, createElapseMillis 21704067, createErrorCount 2

druid 版本升级到了1.2.8 ,ojdbc8版本也是 12.2.0.1 ,但是还是出现,你们都是怎么解决的?

@skomen
Copy link

skomen commented Apr 8, 2022 via email

@jackila
Copy link

jackila commented May 16, 2022

一般是因为慢sql导致的链接池被占用,新请求无法获取到新的链接导致的,自己按照自己的业务提高maxwait time即可

@skomen
Copy link

skomen commented May 16, 2022 via email

@wenshao wenshao closed this as completed May 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests