现象描述:下午19点发布应用正常,凌晨2点碟机。碟机前一段时间 报错,错误信息为错误信息:com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1c17bd4 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks! 最后死锁造成内存溢出,tomcat挂起。
应用环境 :Spring3.0 +ibatis+oracle +tomcat +linux
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${driverClass}" />
<property name="jdbcUrl" value="${jdbcUrl}" />
<property name="user" value="${user}" />
<property name="password" value="${password}" />
<property name="minPoolSize" value="${minPoolSize}" />
<property name="maxPoolSize" value="${maxPoolSize}" />
<property name="maxIdleTime" value="300" />
<property name="acquireIncrement" value="2" />
<property name="maxStatements" value="0" />
<property name="initialPoolSize" value="10" />
<property name="idleConnectionTestPeriod" value="60" />
<property name="acquireRetryAttempts" value="30" />
<property name="testConnectionOnCheckout" value="false" />
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:orm/sqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionManager"
class="com.ai.rmsapp.transaction.RmsDataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
求助!<divclass="ref">
最好能把错误堆栈全部贴出来。
我这边碰到的一个案例是c3p0的tester检测导致的:
c3p0检测程序缺省每次都是查询数据库的全表进行判断,这个很有可能导致死锁。
通过设置preferredTestQuery或者设置connectionTesterClassName可以解决该问题。
这是我碰到的情况,不知跟你碰到的是否是一个问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。