APPARENT DEADLOCK!!! 错误解决过程
项目环境
数据库:oracle
中间件:WAS
2. 问题描述
2015.05.21(是个好日子),早上发现was后台报错如下:
[15-5-21 7:31:01:171 CST] 00000027 SystemErr R com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@498e498e -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
3.问题解决过程
从网上百度下这个错误,分析大致如下:
原因是 hibernate 使用c3p0连接orcale数据后不会释放 , c3p0的最大连接数为100,但显然c3p0有Bug,导致数据库连接池不够用,导致进程锁死。
后换Proxool后,观察正常。
参考网址:http://blog.csdn.net/chinesesword/article/details/7902702
http://blog.sina.com.cn/s/blog_5491164b0100sxtc.html
http://myzee.blog.163.com/blog/static/2088712420121110139423/
http://www.blogjava.net/liuyimx/articles/296849.html
综合参考网站,修改了oracle的连接数如下:
1、修改Oracle最大连接数的方法
a、以sysdba身份登陆PL/SQL 或者 Worksheet
b、查询目前连接数
show parameter processes;
c、更改系统连接数
alter system set processes=1000 scope=spfile;
d、创建pfile
create pfile from spfile;
e、重启Oracle服务或重启Oracle服务器
修改后,当时报错指向是c3p0的设置参数,没有报APPARENT DEADLOCK!!!错误,但是过了几个小时后开始报APPARENT DEADLOCK!!!错误
联系开发人员开发人员告知:
在\WEB-INF\classes\hibernate.cfg.xml文件中去掉相关配置
<!--<property name="hibernate.c3p0.min_size">5</property>-->
<!-- <property name="hibernate.c3p0.max_size">500</property>-->
<!-- <property name="hibernate.c3p0.timeout">1800</property>-->
<!-- <property name="hibernate.c3p0.max_statements">50</property> -->
---即将hibernate配置文件中的c3p0配置参数注释掉
重启was ,然后跑个etl任务测试下,没有发现再次报此错误。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341