`

C3P0使用出错!

阅读更多
网站今日又出现不能访问的原因:
日志如下:

 [framework] 2008-09-18 18:36:05,109 - com.mchange.v2.async.ThreadPoolAsynchronousRunner -46651078 [Timer-18] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1c17bd4 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!


网上说是连接池的原因....

我的C3P0配置
	<property name="hibernate.connection.provider_class">
			org.hibernate.connection.C3P0ConnectionProvider
		</property>
		<property name="c3p0.min_size">20</property>
		<property name="c3p0.max_size">200</property>
		<property name="c3p0.time_out">1800</property>
		<property name="c3p0.max_statement">100</property>
		<property name="c3p0.validate">true</property>


对于以上错误,查阅了类似问题网友的解答:
一:http://www.iteye.com/topic/22160?page=3
引用
把max_statements设置为0。
c3p0在同时关闭statement和connection的时候,或者关闭他们之间的时间很短的时候,有时候connection并没有被关闭,因为有些preparedstatement还在被cached住。这是c3p0的作者自己说的。
http://forum.hibernate.org/viewtopic.php?t=947246&highlight=apparent+deadlock+c3p0

对于这个解答,看下我的设置:
<property name="c3p0.max_statement">100</property>

因为这里c3p0.max_statements写错了,所以设置无效,看下日志
[framework] 2008-09-18 06:32:48,906 - com.mchange.v2.c3p0.C3P0Registry -3257219 [TP-Processor1] INFO  com.mchange.v2.c3p0.C3P0Registry  - Initializing c3p0-0.9.1 [built 16-January-2007 14:46:42; debug? true; trace: 10]
 [framework] 2008-09-18 06:32:48,906 - com.mchange.v2.c3p0.management.ActiveManagementCoordinator -3257219 [TP-Processor1] WARN  com.mchange.v2.c3p0.management.ActiveManagementCoordinator  - A C3P0Registry mbean is already registered. This probably means that an application using c3p0 was undeployed, but not all PooledDataSources were closed prior to undeployment. This may lead to resource leaks over time. Please take care to close all PooledDataSources.
 [framework] 2008-09-18 06:32:49,015 - com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource -3257328 [TP-Processor1] INFO  com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource  - Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@7111383 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@a9b46d3 [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 2rysjs7wvr5h721dikp1v|1880048, idleConnectionTestPeriod -> 0, initialPoolSize -> 20, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 200, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 20, nestedDataSource -> 

maxStatements的默认值为0
所以这种解决方法,感觉不行

二.http://yonguo.iteye.com/blog/120574
引用
更改配置文件里的最大连接数和初始化连接数大小:
<property name="maxPoolSize" value="1"/>   
<property name="initialPoolSize" value="1"/>  


因为数据库的连接数是有限的,每次应用启动C3p0都会占用数据库的连接来填充C3p0的连接池,而当数据库的资源被占光时就会因为无法获得共享资源而报死锁。

此方法可能有理,但没有测试.

三.http://www.iteye.com/problems/1082
引用
Basic Pool Configuration 
c3p0 Connection pools are very easy to configure via the following basic parameters:

acquireIncrement
initialPoolSize
maxPoolSize
maxIdleTime
minPoolSize
initialPoolSize, minPoolSize, maxPoolSize define the number of Connections that will be pooled. Please ensure that minPoolSize <= maxPoolSize. Unreasonable values of initialPoolSize will be ignored, and minPoolSize will be used instead.

Within the range between minPoolSize and maxPoolSize, the number of Connections in a pool varies according to usage patterns. The number of Connections increases whenever a Connection is requested by a user, no Connections are available, and the pool has not yet reached maxPoolSize in the number of Connections managed. Since Connection acquisition is very slow, it is almost always useful to increase the number of Connections eagerly, in batches, rather than forcing each client to wait for a new Connection to provoke a single acquisition when the load is increasing. acquireIncrement determines how many Connections a c3p0 pool will attempt to acquire when the pool has run out of Connections. (Regardless of acquireIncrement, the pool will never allow maxPoolSize to be exceeded.)

The number of Connections in a pool decreases whenever a pool tests a Connection and finds it to be broken (see Configuring Connection Testing below), or when a Connection is expired by the pool after sitting idle for a period of time, or for being too old (See Managing Pool Size and Connection Age.)



四.http://blog.sina.com.cn/s/blog_3e7ed9500100abzz.html

根据以上的一些解答,修改配置文件:
<property name="hibernate.connection.provider_class">
			org.hibernate.connection.C3P0ConnectionProvider
		</property>
<!-- 初始化默认为20 -->
                  <property name="initialPoolSize">1</property>
		<property name="c3p0.min_size">1</property>
		<property name="c3p0.max_size">500</property>
                  
		<property name="c3p0.time_out">1800</property>
<!--每隔100秒检测连接是否可正常使用 -->   
    <property name="c3p0.idle_test_period">1000</property> 
		<property name="c3p0.validate">true</property>
<property name="hibernate.c3p0.acquire_increment">3</property> 


对于这种配置也不知道结果会怎么样?
不知道有没有什么测试方法能马上看到效果?

其实hibernate里支持的c3p0参数没有多少.更多的还得在c3p0.property文件中定义
http://www.mchange.com/projects/c3p0/index.html#c3p0_properties

2
4
分享到:
评论
2 楼 east_java 2008-09-28  
[framework] 2008-09-27 05:54:46,750 - com.mchange.v2.c3p0.management.ActiveManagementCoordinator -0    [TP-Processor3] WARN  com.mchange.v2.c3p0.management.ActiveManagementCoordinator  - A C3P0Registry mbean is already registered. This probably means that an application using c3p0 was undeployed, but not all PooledDataSources were closed prior to undeployment. This may lead to resource leaks over time. Please take care to close all PooledDataSources.
 [framework] 2008-09-27 05:54:47,687 - org.hibernate.cache.EhCacheProvider -937  [TP-Processor3] WARN  org.hibernate.cache.EhCacheProvider  - Could not find configuration [useCache]; [framework] 2008-09-27 13:25:41,484 - org.apache.struts.action.RequestProcessor -27483516 [TP-Processor15] WARN  org.apache.struts.action.RequestProcessor  - Unhandled Exception thrown: class java.lang.NullPointerException
 [framework] 2008-09-27 16:45:27,671 - com.mchange.v2.async.ThreadPoolAsynchronousRunner -39469703 [Timer-0] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetecto[framework] 2008-09-27 16:45:38,171 - com.mchange.v2.async.ThreadPoolAsynchronousRunner -39051421 [Timer-1] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@8772ca -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
 [framework] 2008-09-27 16:45:38,171 - com.mchange.v2.async.ThreadPoolAsynchronousRunner -39051421 [Timer-1] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@8772ca -- APPARENT DEADLOCK!!! Complete Status: 
	Managed Threads: 3
	Active Threads: 3
	Active Tasks: 
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@a766f0 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@575786 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@332f00 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
	Pending Tasks: 
		com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@52cd01
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1122c6
Pool thread stack traces:
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
		java.lang.Thread.sleep(Native Method)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
		java.lang.Thread.sleep(Native Method)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
		java.lang.Thread.sleep(Native Method)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)


 hod)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)


 [framework] 2008-09-28 00:28:14,468 - org.apache.struts.action.RequestProcessor -67236500 [TP-Processor7] WARN  org.apache.struts.action.RequestProcessor  - Unhandled Exception thrown: class java.lang.NumberFormatException
 [framework] 2008-09-28 01:30:58,375 - org.apache.struts.action.RequestProcessor -71000407 [TP-Processor14] WARN  org.apache.struts.action.RequestProcessor  - Unhandled Exception thrown: class java.lang.NullPointerException
 [framework] 2008-09-28 09:42:08,828 - com.mchange.v2.async.ThreadPoolAsynchronousRunner -100470860 [Timer-0] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1cb365b -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
 [framework] 2008-09-28 09:42:11,843 - com.mchange.v2.async.ThreadPoolAsynchronousRunner -100473875 [Timer-0] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1cb365b -- APPARENT DEADLOCK!!! Complete Status: 
	Managed Threads: 3
	Active Threads: 3
	Active Tasks: 
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@7b4d1 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@1f03698 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@1904275 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
	Pending Tasks: 
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@1fb4577
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@18dc83e
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@1559dd1
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@1ec1155
Pool thread stack traces:
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:560)
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:560)
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:560)


 [framework] 2008-09-28 10:46:14,828 - com.mchange.v2.async.ThreadPoolAsynchronousRunner -104316860 [Timer-0] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1cb365b -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
 [framework] 2008-09-28 10:46:14,828 - com.mchange.v2.async.ThreadPoolAsynchronousRunner -104316860 [Timer-0] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1cb365b -- APPARENT DEADLOCK!!! Complete Status: 
	Managed Threads: 3
	Active Threads: 0
	Active Tasks: 
	Pending Tasks: 
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@19f9c21
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@1c3635d
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@b0ac18
		com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@f27ac8
Pool thread stack traces:
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,]
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,]
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,]


 
1 楼 east_java 2008-09-26  

以上的配置文件,在运行后不久,直接出现打不开网页的问题..

相关推荐

    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