com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 3005, active 10

数据库连接池异常

com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 3005, active 10

原因

其实原因很简单就是我们的连接池中的连接使用完了,没有办法开辟新的连接.这个连接池技术是阿里巴巴的Druid数据库连接池技术, 意思很明显,活动的连接数与最大连接数相同,连接用完了,在等待新的连接,却没有新连接可用,然后超时了.

我产生错误的原因

我的错误就是在数据库操作的时候使用使用关闭数据连接的方法,也就是每次SQL操作之后没有释放数据库连接资源,然后导致了我的连接不够使用,
下面是我的配置文件

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///student
username=root
password=9672005
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000

解决方法

1.给自己代码设置数据库连接池的资源释放
2.在配置中添加如下Druid的配置即可:设置超过时长时自动回收

#druid recycle Druid的连接回收机制
#超过时间限制是否回收
spring.datasource.druid.removeAbandoned = true
#超时时间;单位为秒。180=3分钟
spring.datasource.druid.removeAbandonedTimeout = 180
#关闭abanded连接时输出错误日志
spring.datasource.druid.logAbandoned = true

3、在xml配置文件中时设置自动回收:

<!-- 超过时间限制是否回收 -->  
<property name="removeAbandoned" value="true" />  
<!-- 超时时间;单位为秒。180=3分钟 -->  
<property name="removeAbandonedTimeout" value="180" />  
<!-- 关闭abanded连接时输出错误日志 -->  
<property name="logAbandoned" value="true" />

添加如上配置还可以很清楚地看到是在哪里打开的连接未关闭一直在占有。但是会影响程序的性能。一般情况下这种方法只使用在调试

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值