设为首页 加入收藏

TOP

C3P0死锁问题的解决办法
2014-11-24 07:55:41 来源: 作者: 【 】 浏览:0
Tags:C3P0 问题 解决 办法

最近把C3P0拿来作为数据库连接池,起初只连接一个sqlserver,感觉还比较正常,然后又加了一个数据源,是个oracle,问题就开始出现了。经常是每天早上刚上班就莫名其妙的报死锁,或者是等午休结束后刚开始登录使用就报死锁,网上搜了很多贴着,说是c3p0自身的bug,放大连接池数就OK了,随即把maxPoolSize从20调到了100,并把内存也放大了,发现的确有所缓解,但只是缓解,死锁的频率降低了一点,但还是经常会出现。

实在无奈,就继续查资料,无意中发现另一个sqlserver数据库(不是这里提到的c3p0的一个数据源)有这样一条配置:validationQuery="select 1",查了下意思,大概就是说连接长期不使用时,连接池会自动从数据库中断开该连接,等再次使用时再尝试连接,这个语句就是在断开重连时做检测的。感觉意思有那么点像,就搜了下c3p0是否有类似的配置,果然找到了一个:

SELECT 1

加上该配置后,到目前为止,已经1天半了,一直没有出现问题,后续详情,有待继续观察,但是按照之前的出现概率和场景,这个时候应该是会出现死锁的,至于这个配置的原理,后续慢慢了解,等待继续更新。

附上c3p0配置项的一个帖子:

http://www.blogjava.net/ashutc/archive/2011/03/16/346365.html

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇atitit。hbHibernatesql查询使用 下一篇c3p0连接池

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++模板 (template) (2025-12-26 15:49:49)
·C 语言中模板的几种 (2025-12-26 15:49:47)
·模板(泛型) - C语 (2025-12-26 15:49:44)
·C语言中,“指针”用 (2025-12-26 15:20:18)
·在c语言的指针运算中 (2025-12-26 15:20:15)