An attempt by a client to checkout a Connection has timed out

An attempt by a client to checkout a Connection has timed out: 客户端尝试获取链接connection链接超时.数据库

当链接池的链接用完时,客户端调用getConnection()后,等待获取新链接的时间,超时后将抛出该异常。debug

解决方法:get

1.适当加大maxPoolSize和minPoolSize  ,能够缓解这种状况。io

2.自动超时回收unreturnedConnectionTimeout(强烈推荐)。cli

最近遇到这个形成的问题了,抛出异常为:Overdue resource check-out stack trace。这里作一下深刻研究。配置

c3p0配置是这样的:bug

debugUnreturnedConnectionStackTraces=true
unreturnedConnectionTimeout=1000

解释一下:debugUnreturnedConnectionStackTraces是一个开关,启用以后,对于每一个从链接池拿出去的数据库链接,若是一段时间内没有归还,C3P0就会强制关闭这个链接,并将获取链接时的stack trace,以抛出异常的方式显示出来,即Overdue resource check-out stack trace。 unreturnedConnectionTimeout设置多长时间会超时,以秒为单位。方法

假设系统中怀疑有链接泄露,那么,就能够启用这个功能,评估全部页面执行完成须要的最长时间,例如20分钟,而后将unreturnedConnectionTimeout设置为略大于这个时间。im

3.配置超时自动断开 (推荐)
maxIdleTimeExcessConnections=20
maxConnectionAge=20 
default : 0 单位 s
配置链接的生存时间,超过这个时间的链接将由链接池自动断开丢弃掉。固然正在使用的链接不会立刻断开,而是等待它close再断开。配置为0的时候则不会对链接的生存时间进行限制。数据

4.检查代码,确认用完后close链接(不要小看这个,容易遗漏)。

相关文章
相关标签/搜索