开发者社区> 问答> 正文

C3P0数据库连接池死锁 com.mchange.v2.async.Thread?报错

现象描述:下午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>

 

展开
收起
爱吃鱼的程序员 2020-06-22 19:47:17 1299 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    求助!<divclass="ref">

    引用来自“羡慕南飞的雁”的答案

    <divclass=ref_body>求助!把maxPoolSize设小一点。缓存溢出,虚拟机内存调大,连接池缓存设小。建议监控下数据库的Session管理<imgalt=""src="http://static.oschina.net/uploads/space/2013/0504/115224_KmIa_245757.gif"/><divclass="ref">

    引用来自“chad”的答案

    <divclass=ref_body>建议监控下数据库的Session管理还是要具体分析下

    最好能把错误堆栈全部贴出来。

    我这边碰到的一个案例是c3p0的tester检测导致的:

    c3p0检测程序缺省每次都是查询数据库的全表进行判断,这个很有可能导致死锁。

    通过设置preferredTestQuery或者设置connectionTesterClassName可以解决该问题。

    这是我碰到的情况,不知跟你碰到的是否是一个问题。

    2020-06-22 19:47:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载