`

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包以及Spring对c3p0的依赖包

    使用连接池,如C3P0,可以有效地复用已存在的数据库连接,降低系统资源消耗,提高系统的响应速度。 C3P0的主要特点包括: 1. **连接测试**:C3P0提供了多种连接测试方式,如ping、isValid()等,确保获取到的数据库...

    DBUtil使用于javaWeb连接池c3p0

    下面我们将详细探讨`DBUtil` 的使用方法以及C3P0连接池的工作原理。 1. **C3P0简介** C3P0是由Miguel Grinberg创建的一个开源项目,它提供了数据库连接池的实现。C3P0的主要功能包括:自动管理数据库连接的创建和...

    4.mysql dbutils c3p0 缓存池工具类

    总结起来,"4.mysql dbutils c3p0 缓存池工具类"这个主题涉及了如何在Java项目中使用MySQL数据库,以及如何通过DBUtils和C3P0来简化数据库操作和管理数据库连接。DBUtils提供了一套实用的数据库操作API,而C3P0则...

    C3po连接池的工作总结

    C3P0是一个纯Java编写的持久层框架,它可以显著提高对数据库连接的管理和使用效率。C3P0的核心类`ComboPooledDataSource`提供了一种高效的连接池实现。 #### 二、C3P0连接池的使用方法 ##### 1. 导入所需Jar包 在...

    mchange-commons-java-0.2.15.jar找不到的问题的解决

    c3p0连接mysql8.0.11需要外加mchange-commons-java-0.2.15.jar,maven的pom.xml 中配置了,但是项目中报找不到mchange-commons-java-0.2.15.jar这个文件,可以把此文件下载后,然后解压后把对应的jar包放到maven 库...

    jdbc驱动包

    使用这些库时,开发者需要在项目的类路径中包含这些JAR文件,然后通过配置文件(如`c3p0.properties`)设置C3p0的参数,如最小连接数、最大连接数、获取连接超时等。接着,在DBUtils的帮助下,可以编写简洁的代码来...

    学生信息管理系统.zip

    本项目“学生信息管理系统”采用MVC(Model-View-Controller)设计模式,结合MYSQL数据库、Servlet技术、C3P0连接池、DBUtils工具类以及Bootstrap前端框架,构建了一个完整的后台管理系统,实现了对学生信息的增删改...

    MVC模式下数据库连接池的Web应用方案

    2. **程序维护方面**:需要确保每个涉及数据库操作的JSP页面能够正确关闭连接,这增加了出错的可能性。 3. **系统安全方面**:直接将数据库操作嵌入JSP页面中容易遭受攻击。 #### 2 连接池技术 为了解决上述问题,...

    Hibernate4.3.6教程

    在这个教程中,我们将会深入探讨如何在Hibernate 4.3.6版本中结合Java Persistence API (JPA)进行开发,以及如何使用数据连接池c3p0来优化数据库连接的管理。 首先,让我们了解Hibernate的基本概念。ORM框架的核心...

    eclipse4.5.0的STS插件_spring用到的jar包_sts_已分类_

    标题中的“eclipse4.5.0的STS插件”指的是Spring Tool Suite (STS) 的...通过这些jar包,开发者可以轻松构建基于Spring的系统,包括使用AOP、数据库连接池c3p0以及日志记录工具log4j,同时还能够方便地进行数据库交互。

    Spring2.5学习文档3.pdf

    为了管理数据库连接,使用了c3p0连接池。首先将c3p0的jar包添加到项目类路径中。接着,在Spring配置文件中,我们通过`&lt;context:property-placeholder&gt;`标签引入外部的`jdbc.properties`文件,用于存储数据库连接信息...

    jdbc_Utils_jar

    通过使用c3p0连接池管理数据库连接,可以有效地复用连接,提高效率;DbUtils则简化了数据库操作,减少了出错的可能性;而JUnit确保了代码质量;数据库驱动jar则使得与不同数据库的兼容性成为可能。 在实际项目中,...

    java常用的lib

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了比DBCP更完善的连接池管理功能,如空闲连接检测、连接有效性检查等。C3P0还支持自动扩展,当数据库连接达到预设上限时,会尝试创建更多连接。这使得...

    简单的客户管理系统

    使用时需导入mysql,c3p0架包 随着社会的迅速发展,企业也呈现飞跃式的发展,而且每年都有不同的要求。企业的信息量也非常的大,数据可能经常性的发生更换,原来手工的管理模式早已经满足不了现在社会的需求。而且...

    JSP使用ODBC连接Access数据库

    此外,随着Java技术的发展,现在推荐使用JDBC 4.0及以上版本的驱动,例如Apache的DBCP或C3P0连接池,这些驱动提供了更好的性能和稳定性,而且无需手动加载驱动,可以直接使用`DriverManager.getConnection()`。...

    DBUtils数据库的使用

    4. **ConnectionPool**:DBUtils支持数据库连接池,如DBCP、C3P0等,以提高数据库操作的性能。连接池可以有效地管理数据库连接,避免了频繁创建和关闭连接的开销。 5. **ExceptionTranslator**:DBUtils包含了对...

    开发常用jar2

    6. **c3p0**:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0提供了一些高级特性,如自动关闭空闲连接、监控连接健康状况等。 7. **commons-io**:Apache Commons ...

    Java数据库操作类20170703

    在这个资料中,c3p0-0.9.1.2.jar文件就是一种常用的数据库连接池实现库,它提供了一套完整的连接池管理机制,支持自动获取、释放连接以及健康检查等功能。 DBUtil.java文件通常包含数据库操作的通用工具类,它封装...

    学生管理系统数据库版_控制台_软件分层

    在此项目中,使用C3p0连接池管理和维护数据库连接,这不仅提高了连接的利用效率,减少了资源消耗,也提升了系统对数据库访问的性能。C3p0作为一个功能强大的开源JDBC连接池,能够提供自动重连、线程安全等功能,是...

    JEECMS v2.4.1 beta 系统程序.rar

    在技术主要对数据库连接池组件进行的更换,采用了c3p0连接池组件,有效解决了由于同时运行多个jeecms项目时导致的jar包冲突问题。 以下是JEECMS v2.4.1 beta版更新的详细内容: 1、修正了后台用户密码修改的问题...

Global site tag (gtag.js) - Google Analytics