问题日志:
系统频繁的出现了如下日志:
An SQLException was provoked by the following failure: com.mchange.v2.resourcepool.ResourcePoolException: Attempted to use a closed or broken resource pool
错误日志的大概意思是:程序正在尝试获取一个已经关闭或者中断的连接资源池。
问题原因:
由于c3p0的属性
breakAfterAcquireFailure 的配置为true,设置为true后只要
pool向数据库请求连接存在一次失败后就会标记整个连接池为阻塞状态并是连接池处于关闭状态,这样的话,即使数据库
存在空闲的连接,也不会去获取连接,而是使整个连接池处于关闭状态,这正好符合了我们的上面的提出的日志抛出的异常。所以,目前从上述的分析,应该是该连接池的属性
breakAfterAcquireFailure
为true引起的
问题修改:
基于上述分析,昨晚把c3p0的连接池属性
breakAfterAcquireFailure设置为false,这样,就不会再请求连接失败后,标记整个连接池不可用;在连接高峰期一会在重试时间后,获取可用
数据库连接