`

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!!!!!!

    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