`
jimlaren
  • 浏览: 42682 次
文章分类
社区版块
存档分类
最新评论
阅读更多

把max_statements设置为0。
c3p0在同时关闭statement和connection的时候,或者关闭他们之间的时间很短的时候,有时候connection并没有被关闭,因为有些preparedstatement还在被cached住。这是c3p0的作者自己说的。
http://forum.hibernate.org/viewtopic.php?t=947246&highlight=apparent+deadlock+c3p0

C3P0增加以下配置信息:

 
  1. //set to 'SELECT 1'      
  2. preferredTestQuery = 'SELECT 1'    
  3.  //set to something much less than wait_timeout, prevents connections from going stale   
  4. idleConnectionTestPeriod = 18000     
  5. //set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out   
  6. maxIdleTime = 25000    
  7. //if you can take the performance 'hit', set to "true"   
  8. testConnectionOnCheckout = true    

 

A c3p0 pool with the settings you have should recover from a database reset, but that doesn't mean you will never see an Exception. Stale Connections from the old database session will still be broken, and if those Connections have already been checked out, or if they are in the pool and not tested on checkout, the application will see the broken Connection, in the form of an Exception.

You can use c3p0 to minimize the likelihood that your application will see a stale Connection on database shutdown/restart. The most reliable means of preventing this is to set hibernate.c3p0.validate to true (in a hibernate application -- all other c3p0 apps should use the c3p0-native property c3p0.testConnectionOnCheckout). If you set this property to true, c3p0 will test Connections prior to checkout, and your app will never see a stale Connection on database restart unless the Connection had already been checked out when the database went down.

Another less reliable, but potentially less expensive, strategy is to set c3p0.testConnectionsOnCheckin and hibernate.c3p0.idle_test_period (c3p0-native c3p0.idleConnectionTestPeriod) to a low value, in which case all connection tests are asynchronous and you are guanteed that no Connection will be checked out that hasn't been tested in the last idle_test_period seconds. Thus, your app will only see broken Connections from the pool if Connections are checked out during a short window of time.

In either case, I recommend setting "c3p0.preferredTestQuery" or "c3p0.automaticTestTable" in your c3p0 properties file, as c3p0's default Connection test is often slow.

See "Configuring Connection Testing" in c3p0's docs for more information.

 

在使用c3p0作为连接池时,其中的一些配置参数需要修改。主要是maxIdleTime和idleConnectionTestPeriod。 MySQL默认是8小时(28800秒)后自动关闭已打开的连接,所以c3p0要在8小时内关闭不使用的连接,上面的2参数要小于28800秒。附上在 hibernate中配置c3p0的关键字。

c3p0-native property name hibernate configuration key
c3p0.acquireIncrement hibernate.c3p0.acquire_increment
c3p0.idleConnectionTestPeriod hibernate.c3p0.idle_test_period
c3p0.initialPoolSize not available -- uses minimum size
c3p0.maxIdleTime hibernate.c3p0.timeout
c3p0.maxPoolSize hibernate.c3p0.max_size
c3p0.maxStatements hibernate.c3p0.max_statements
c3p0.minPoolSize hibernate.c3p0.min_size

 

 

分享到:
评论

相关推荐

    C3P0错误APPARENT DEADLOCK 解决根本问题

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

    c3p0-0.9.2-pre1

    1. **异常处理**:c3p0提供了丰富的异常类,如`C3P0Exception`,帮助开发者识别和处理连接池相关的错误。 2. **监控**:c3p0内置了统计和监控机制,可以通过`getStatistics()`获取池的状态信息,也可以通过JMX...

    C3P0-jar包和依赖包.zip

    - **异常处理**:C3P0库对数据库操作的异常进行了封装,提供了更友好的错误处理方式。 - **池化对象(PoolableConnection, PooledConnection)**:C3P0通过池化数据库连接,减少了每次请求新连接时的开销,提高了...

    C3P0的jar包

    7. **异常处理**:当连接池中没有可用连接或者遇到其他错误时,C3P0会抛出相应的异常,帮助开发者快速定位问题。 8. **与其他框架的集成**:C3P0可以与许多流行的Java Web框架,如Spring、Hibernate等无缝集成,...

    c3p0和mchange匹配的版本

    在实际应用中,确保C3P0与MChange的版本兼容性至关重要,因为不匹配的版本可能导致各种连接问题,如“底层数据库未连接”这样的错误提示。 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和...

    c3p0-0.9.1.2.zip

    在C3P0 0.9.1.2这个版本中,可能包含了一些错误修复、性能优化或新特性。不过,由于没有具体的变更日志,我们无法详细列举这些变化。通常,更新到新版本是为了获取更好的稳定性和兼容性,或者利用新引入的功能。 C3...

    c3p0连接池所需要用到的2个jar包

    C3P0连接池是Java开发中常用的数据库连接池组件,它可以帮助开发者高效管理数据库连接,提高系统的性能和稳定性。本压缩包包含了两个关键的JAR文件:mchange-commons-java-0.2.19.jar和c3p0-0.9.5.5.jar,它们是C3P0...

    c3p0完整包内置xml

    c3p0是款强大的数据库连接池 其完整包要到官网下载 第一次使用学习的同学一定很是头大!因为不知道怎么写xml环境配置文件 ...) 2 c3p0-config.xml文件必须存放到src跟目录下((否则c3p0会找不到文件导致驱动加载错误!)

    c3p0及其源码

    3. **连接测试**:在将连接分配给用户之前,C3P0可以执行预定义的SQL查询来验证连接的有效性,避免了因使用无效连接导致的错误。 4. **性能优化**:C3P0提供了多种配置选项,如最小/最大连接数、初始连接数、连接...

    c3p0-0.9.5.2(含配置文件)连接池.zip

    这是c3p0-0.9.5.2(含配文件)连接池技术的资源,里面含c3p0-0.9.5.2.jar包,这是c3p0数据库连接池的jar包,mchange-commons-java-0.2.11.jar是数据库连接池的依赖包,导入时,要一同导入,否则会产生错误。...

    C3P0详细配置C3P0详细配置.docC3P0详细配置.docC3P0详细配置.doc

    C3P0是一款开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,C3P0可以帮助管理和优化数据库连接,提高应用程序的性能和效率。以下是对C3P0配置中各个属性的详细解释...

    c3p0数据库连接池

    **c3p0数据库连接池详解** c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0的主要功能是管理数据库连接,通过复用已存在的连接来提高数据库访问效率,减少系统资源...

    java hibernate c3p0

    6. **异常处理**:探讨C3P0在遇到数据库连接问题时的错误处理机制,如连接泄漏、超时等问题的排查和解决。 7. **性能调优**:分享C3P0的性能优化技巧,如调整连接池大小、设置合适的测试查询以确保连接有效性等。 ...

    C3P0连接池jar包

    6. **异常处理**:C3P0具有完善的异常处理机制,当数据库连接出现问题时,可以及时反馈错误信息,并尝试恢复连接。 7. **JNDI集成**:C3P0可以被注册到JNDI服务中,使得应用可以通过JNDI查找来获取数据源,方便了...

    c3p0jar包(包括依赖包)

    - **异常处理**:当数据库连接出现问题时,C3P0会进行相应的错误处理和重试机制,增强了系统的健壮性。 2. **mchange-commons-java库** - **通用工具类**:mchange-commons-java库提供了许多实用的工具类,如字符...

    C3P0连接池jar包.rar

    C3P0连接池是一个开源的Java数据库连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,数据库连接的创建和销毁是耗时操作,而连接池则可以有效地管理这些连接,避免频繁地创建和...

    dbutil+c3p0

    "dbutil+c3p0"这个组合涉及到两个关键组件:DBUtils和C3P0,它们都是Java数据库连接(JDBC)的辅助工具,使得数据库操作更加高效和便捷。下面将详细阐述这两个工具以及它们在实际应用中的作用。 首先,DBUtils是...

    c3p0jar包和源码以及参数配置

    6. 异常处理:C3P0提供了完善的异常处理机制,当数据库连接出现问题时,可以及时通知应用程序,避免因连接问题导致的程序错误。 源码部分可以帮助开发者了解C3P0内部的工作流程,比如如何实现连接的创建、分配、...

    C3p0连接池问题

    4. 错误处理:C3p0在处理异常时,如果没有妥善处理,可能会影响整个应用的稳定性。 解决这些问题通常需要: 1. 仔细审查并调整C3p0的配置参数,如minPoolSize、maxPoolSize、maxIdleTime等,以适应应用的需求。 2. ...

    c3p0-0.9.5.5.src.zip

    5. **异常处理**:C3P0提供了详细的错误日志和监控机制,有助于开发者快速定位和解决问题。 6. **JDBC兼容性**:C3P0支持JDBC3和JDBC2的标准扩展,这意味着它可以与大多数主流的数据库驱动程序无缝配合。 在实际...

Global site tag (gtag.js) - Google Analytics