mysql连接报错:Cannot get a connection, pool error Timeout waiting for idle object

报错内容:commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object

在我的程序中多线程从数据库连接池中拿连接对象时,出现这个错误。翻译成中文就是,无法获得连接对象,数据池出现错误,等待空闲对象超时。

解决办法

等待空闲的连接对象超时,那么可以考虑两种解决办法,将等待空闲连接对象的等待时间加长,允许程序更长的等待时间而避免错误。另一种办法就是设法增加连接池中可用的连接对象,避免程序在获取连接对象时陷入等待的境地。

其实第一种方法只能暂时避免报错信息,第二种办法才是解决问题的有效办法,尤其多线程获取数据池连接对象的情况下,应该尽量将活跃连接对象数量大于等于活跃线程的数量,从而保证连接对象足够充裕。

以下是数据池相关参数的配置信息。

maxActive 连接池支持的最大连接数,这里取值为20,表示同时最多有20个数据库连接。设 0 为没有限制。

maxIdle 连接池中最多可空闲maxIdle个连接 ,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。设 0 为没有限制。

minIdle 连接池中最少空闲maxIdle个连接

initialSize 初始化连接数目

maxWait 连接池中连接用完时,新的请求等待时间,毫秒,这里取值-1,表示无限等待,直到超时为止,也可取值9000,表示9秒后超时。超过时间会出错误信息一般把maxActive设置成可能的并发量就行了

timeBetweenEvictionRunsMillis timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis一起使用,每

timeBetweenEvictionRunsMillis毫秒秒检查一次连接池中空闲的连接,把空闲时间超过minEvictableIdleTimeMillis毫秒的连接断开,直到连接池中的连接数到minIdle为止

minEvictableIdleTimeMillis 连接池中连接可空闲的时间,毫秒

removeAbandoned true,false,是否清理removeAbandonedTimeout秒没有使用的活动连接,清理后并没有放回连接池

removeAbandonedTimeout 活动连接的最大空闲时间

logAbandoned true,false,连接池收回空闲的活动连接时是否打印消息

minEvictableIdleTimeMillis,removeAbandonedTimeout这两个参数针对的连接对象不一样,minEvictableIdleTimeMillis针对连接池中的连接对象,removeAbandonedTimeout针对未被close的活动连接。

数据池连接参数原文链接

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值