java关于c3p0+jdbc数据库死锁的问题,求大神帮忙看看

ceekay_ 2016-05-03 02:53:37
 2016-05-03 12:02:27 [ WARN] - com.mchange.v2.async.ThreadPoolAsynchronousRunner -ThreadPoolAsynchronousRunne
.java(555) -Task com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@140b4fc (in deadlocked Po
lThread) failed to complete in maximum time 60000ms. Trying interrupt().
2016-05-03 12:03:27 [ WARN] - com.mchange.v2.async.ThreadPoolAsynchronousRunner -ThreadPoolAsynchronousRunne
.java(555) -Task com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@73d1ef (in deadlocked Poo
Thread) failed to complete in maximum time 60000ms. Trying interrupt().
2016-05-03 12:03:27 [ WARN] - com.mchange.v2.async.ThreadPoolAsynchronousRunner -ThreadPoolAsynchronousRunne
.java(555) -Task com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@4b3161 (in deadlocked Poo
Thread) failed to complete in maximum time 60000ms. Trying interrupt().
2016-05-03 12:04:27 [ WARN] - com.mchange.v2.async.ThreadPoolAsynchronousRunner -ThreadPoolAsynchronousRunne
.java(791) -com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1fce5e -- APPARENT DEADLOCK!!!
Creating emergency threads for unassigned pending tasks!
2016-05-03 12:04:27 [ WARN] - com.mchange.v2.async.ThreadPoolAsynchronousRunner -ThreadPoolAsynchronousRunne
.java(807) -com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1fce5e -- APPARENT DEADLOCK!!!
Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@df4a5d
on thread: C3P0PooledConnectionPoolManager[identityToken->xbl0969gw9x0zg1cup2je|cabbaa
-HelperThread-#1
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1ee2b30
on thread: C3P0PooledConnectionPoolManager[identityToken->xbl0969gw9x0zg1cup2je|cabbaa
-HelperThread-#0
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1bed0ff
on thread: C3P0PooledConnectionPoolManager[identityToken->xbl0969gw9x0zg1cup2je|cabbaa
-HelperThread-#2
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@9f6ab4
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@feb994
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask@4e63cd
com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@1d9d237
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@30bfaa
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1ec1a8e
com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@156d692
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@184442b
ool thread stack traces:
Thread[C3P0PooledConnectionPoolManager[identityToken->xbl0969gw9x0zg1cup2je|cabbaa]-HelperThread-#1,5,
ain]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:150)
java.net.SocketInputStream.read(SocketInputStream.java:121)
com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:114)
com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStr
am.java:161)
com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189)
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3036)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3489)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3478)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4019)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728)
com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1979)
com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3586)
com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2460)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
sun.reflect.GeneratedConstructorAccessor6.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.ja
a:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:408)
com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolD
taSource.java:220)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolD
taSource.java:206)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquire
esource(C3P0PooledConnectionPool.java:203)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOn
uccess(BasicResourcePool.java:1125)
com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:
870)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.
ava:696)


配置:
public void init (ConfigInfo cf) throws PropertyVetoException{
dataSource.setDriverClass(cf.getDbDriver());
//对池进行四大参数的配置
dataSource.setJdbcUrl(cf.getDbUrl());
dataSource.setUser(cf.getDbUser());
dataSource.setPassword(cf.getDbPwd());

//池配置,可以不配,有默认值
dataSource.setAcquireIncrement(3);//当连接池中的连接耗尽的时候c3p0一次同时获取的连接数
dataSource.setInitialPoolSize(10);//初始化连接数
dataSource.setMinPoolSize(10);//最小连接
dataSource.setMaxPoolSize(100);//最大连接
dataSource.setMaxIdleTime(20);//最大空闲时间60s
//dataSource.setMaxConnectionAge(60);
dataSource.setCheckoutTimeout(5000);//
dataSource.setAcquireRetryDelay(1000);//
dataSource.setBreakAfterAcquireFailure(false);
dataSource.setIdleConnectionTestPeriod(60);//每60秒检查所有连接池中的空闲连接
dataSource.setMaxStatements(0);//缓存
dataSource.setTestConnectionOnCheckin(true);
}
...全文
213 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,399

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧