C3P0连接池错误
Ibatis中关于C3p0连接池的配置如下:
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
- <property name="driverClass" value="${jdbc.driverClassName}"/>
- <property name="jdbcUrl" value="${jdbc.url}"/>
- <property name="user" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- <property name="minPoolSize" value="1"/>
- <property name="maxPoolSize" value="20"/>
- <property name="maxIdleTime" value="10"/>
- <property name="acquireIncrement" value="3"/>
- <property name="maxStatements" value="0"/>
- <property name="initialPoolSize" value="20"/>
- <property name="idleConnectionTestPeriod" value="10"/>
- </bean>
在执行的时候报如下错误信息:
WARN - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1eeb95
e -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending task
s!
WARN - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1eeb95
e -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@d43997
(com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@110f85
0 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@11e8d5
c (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@d2ad3c
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5
,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
sicResourcePool.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(Ba
sicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5
,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
sicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
(ThreadPoolAsynchronousRunner.java:547)
解决办法:
更改配置文件里的最大连接数和初始化连接数大小:
- <property name="maxPoolSize" value="1"/>
- <property name="initialPoolSize" value="1"/>
因为数据库的连接数是有限的,每次应用启动C3p0都会占用数据库的连接来填充C3p0的连接池,而当数据库的资源被占光时就会因为无法获得共享资源而报死锁。
发表评论
- 浏览: 16632 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
spring中使用proxool作数 ...
感谢
-- by love182055084 -
Roller学习前言
你好请问你怎么把那个源代码放到MyEclipse里面的
-- by chengqianl -
C3P0连接池错误
spring与之应用则也会出现死锁,是不是上面的问题还不清楚!
-- by axiang_2898 -
Eclipse的Velocity和Html ...
thank
-- by linguohuistudy -
重构之Velocity应用经验( ...
Velocity 提供了toolbox加载机制解决对数组、日期、运算等处理。如L ...
-- by bloodwolf_china






评论排行榜