`

C3P0使用出错!

阅读更多

个人博客:http://demi-panda.com/
个人新开博客,欢迎大家来访问,O(∩_∩)O谢谢。

 

数据库连接池配置:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="${env.jdbc.driverClassName}"/>
    <property name="jdbcUrl" value="${env.jdbc.url}"/>
    <property name="user" value="${env.jdbc.username}"/>
    <property name="password" value="${env.jdbc.password}"/>
    <property name="acquireIncrement" value="3"/>
    <property name="initialPoolSize" value="3"/>
    <property name="minPoolSize" value="2"/>
    <property name="maxPoolSize" value="50"/>
    <property name="maxIdleTime" value="600"/>
    <property name="idleConnectionTestPeriod" value="900"/>
    <property name="maxStatements" value="100"/>
    <property name="numHelperThreads" value="10"/>
  </bean>

 

异常信息:

2012-04-17 20:41:08,290 [Timer-0] WARN  async.ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@15335332 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
2012-04-17 21:08:05,952 [Timer-0] WARN  async.ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@15335332 -- APPARENT DEADLOCK!!! Complete Status:
        Managed Threads: 10
        Active Threads: 1
        Active Tasks:
                com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@71d1be4e (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#9)
        Pending Tasks:
                com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@1252d43
Pool thread stack traces:
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#9,5,main]
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:560)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
                java.lang.Object.wait(Native Method)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
                java.lang.Object.wait(Native Method)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#6,5,main]
                java.lang.Object.wait(Native Method)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#5,5,main]
                java.lang.Object.wait(Native Method)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#3,5,main]
                java.lang.Object.wait(Native Method)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#8,5,main]
                java.lang.Object.wait(Native Method)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
                java.lang.Object.wait(Native Method)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#4,5,main]
                java.lang.Object.wait(Native Method)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#7,5,main]
                java.lang.Object.wait(Native Method)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)


2012-04-18 09:12:40,381 [Timer-0] WARN  async.ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@15335332 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!

 


解决方案:

       在网上搜索了很长时间也没有结果,有说改 maxStatements  配置,也有改连接池大小的配置,但是都没有效果


问题重现也很难复现,源码分析也似乎其中的一个线程获取数据后,处理很长时间,然后其他线程都处于挂起状态,没有先存起来,以后继续分析,如果有谁解决了这个请给出方案,谢谢



分享到:
评论

相关推荐

    c3p0.jar!!!!!!

    c3p0,javaee开发所需要的重要数据库连接池!!!!!!!

    C3P0错误APPARENT DEADLOCK 解决根本问题

    网上传言C3P0是因为本身的BUG问题,然而今天我遇到这个问题并解决了,结果发现并不是。通过配置c3p0.maxStatements=0 这种方案只是治标不治本,或者干脆无效。我上传的解决方案肯定能解决这个问题的根本原因。出现...

    C3P0使用,C3P0源码及实例

    C3P0源码及实例:C3P0资源文件配置、XML文件配置 C3P0源码及实例:C3P0资源文件配置、XML文件配置

    c3p0完整包内置xml

    c3p0是款强大的数据库连接池 其完整包要到官网下载 第一次使用学习的同学一定很是头大!因为不知道怎么写xml环境配置文件 所以本人稍微做了整理 里面有样板的xml配置文件 注意:1 配置文件名不能乱改(否则c3p0会找不到...

    C3P0 使用详细说明

    C3P0 连接池使用详细说明, 非常适合新手

    java中c3p0数据库连接池使用方法(c3p0-config.xml+c3p0-0.9.2-pre1.jar+JdbcPool_c3p0.java)

    java中c3p0数据库连接池使用方法(c3p0-config.xml+c3p0-0.9.2-pre1.jar+JdbcPool_c3p0.java),里面包含了c3p0-0.9.2-pre1.jar、以及配置文件:c3p0-config.xml、以及一个c3p0数据库连接池工具类(只有简单的两个方法...

    c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接

    c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接

    c3p0-0.9.5.2-API文档-中文版.zip

    赠送jar包:c3p0-0.9.5.2.jar; 赠送原API文档:c3p0-0.9.5.2-javadoc.jar; 赠送源代码:c3p0-0.9.5.2-sources.jar; 赠送Maven依赖信息文件:c3p0-0.9.5.2.pom; 包含翻译后的API文档:c3p0-0.9.5.2-javadoc-API...

    C3p0c3p0-0.9.5.5三个包

    C3p0c3p0-0.9.5.5三个jar包使用,匹配mysql8.0等信息,包含mchange-commons-java-0.2.19.jar、c3p0-oracle-thin-extras-0.9.5.5.jar、c3p0-0.9.5.5.jar

    c3p0-0.9.2.1 jar包.rar

    C3P0 是最常用的连接池技术!Spring框架,默认支持C3P0连接池技术!

    C3P0数据库连接池

    C3P0数据库连接池和jar包,因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉。而每次新建连接都需要140毫秒左右的时间,所以耗费时间比较多。若使用C3P0连接池来池化...

    C3P0连接池配置需要的jar包

    c3p0-0.9.2.1.jar&&hibernate-c3p0-4.0.0.Final[1].jar&&mchange-commons-java-0.2.3.4.jar

    C3P0使用所需要的jar包

    C3P0实现所需要的jar包: c3p0-0.9.1.2.jar mchange-commons-java-0.2.11.jar mysql-connector-java-5.1.41.jar

    c3p0jar包

    c3p0连接池,java jdbc操作

    c3p0的JAR包

    C3P0是一个开源的JDBC连接池...C3P0数据源在项目开发中使用得比较多。导入相关jar包c3p0-0.9.2-pre1.jar、mchange-commons-0.2.jar,如果操作的是Oracle数据库,那么还需要导入c3p0-oracle-thin-extras-0.9.2-pre1.jar

    c3p0-config.xml

    c3p0配置文件

    c3p0 jar包

    c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包

    c3p0配置文件

    c3p0配置文件

    c3p0jar包及配置文件(可用)

    内容概要:c3p0连接池需要jar包.rar以及相关配置文件 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate、Spring等。 适合人群:正在学习...

    c3p0使用简介

    c3p0各种框架配置参数使用方法以及注释 C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和 jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

Global site tag (gtag.js) - Google Analytics