c3p0plugin mysql_JFinal C3p0Plugin 插件连接mysql经常出现死锁

在使用JFinal的C3p0Plugin连接MySQL时,经常遇到APPARENT DEADLOCK错误,导致数据库操作异常。错误日志显示多个AcquireTask处于等待状态。寻求解决方案。
摘要由CSDN通过智能技术生成

@JFinal  目前使用jfinal的最新版本,通过C3p0插件连接mysql数据库:public static C3p0Plugin createC3p0Plugin() {

return new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());

}

@Override

public void configPlugin(Plugins me) {

// 配置C3p0数据库连接池插件

C3p0Plugin C3p0Plugin = createC3p0Plugin();

me.add(C3p0Plugin);

// 配置ActiveRecord插件

ActiveRecordPlugin arp = new ActiveRecordPlugin(C3p0Plugin);

arp.setShowSql(true);

me.add(arp);

// 所有配置在 MappingKit 中搞定

_MappingKit.mapping(arp);

}

经常会出现 APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!  死锁的情况,异常信息如下:2016-12-21 08:11:50

[WARN]-[Thread: Timer-0]-[com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector.run()]: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1b3bf45b -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!

2016-12-21 08:11:50

[WARN]-[Thread: Timer-0]-[com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector.run()]: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1b3bf45b -- APPARENT DEADLOCK!!! Complete Status:

Managed Threads: 3

Active Threads: 3

Active Tasks:

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@2b4e64c2 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@27b912c4 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@677f163b (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)

Pending Tasks:

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@488cb092

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@c9c6674

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@700a5023

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@3513634c

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@bdc2dcd

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@2442f3d0

com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@2794ef49

Pool thread stack traces:

Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]

java.net.SocketInputStream.socketRead0(Native Method)

java.net.SocketInputStream.read(SocketInputStream.java:152)

java.net.SocketInputStream.read(SocketInputStream.java:122)

com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:101)

com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:144)

com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:174)

com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3001)

com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3462)

com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3452)

com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3893)

com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526)

com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673)

com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545)

com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2503)

com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1369)

com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3833)

com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3283)

com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2297)

com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)

com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:806)

com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)

sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

java.lang.reflect.Constructor.newInstance(Constructor.java:526)

com.mysql.jdbc.Util.handleNewInstance(Util.java:404)

com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)

com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)

com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)

com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)

com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)

com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)

com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)

com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)

com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]

java.net.SocketInputStream.socketRead0(Native Method)

java.net.SocketInputStream.read(SocketInputStream.java:152)

java.net.SocketInputStream.read(SocketInputStream.java:122)

com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:101)

com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:144)

com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:174)

com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3001)

com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3462)

com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3452)

com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3893)

com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526)

com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673)

com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545)

com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2503)

com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1369)

com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3833)

com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3283)

com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2297)

com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)

com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:806)

com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)

sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

java.lang.reflect.Constructor.newInstance(Constructor.java:526)

com.mysql.jdbc.Util.handleNewInstance(Util.java:404)

com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)

com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)

com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)

com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)

com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)

com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)

com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)

com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)

com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]

java.net.SocketInputStream.socketRead0(Native Method)

java.net.SocketInputStream.read(SocketInputStream.java:152)

java.net.SocketInputStream.read(SocketInputStream.java:122)

com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:101)

com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:144)

com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:174)

com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3001)

com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3462)

com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3452)

com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3893)

com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526)

com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673)

com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545)

com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2503)

com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1369)

com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3833)

com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3283)

com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2297)

com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)

com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:806)

com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)

sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

java.lang.reflect.Constructor.newInstance(Constructor.java:526)

com.mysql.jdbc.Util.handleNewInstance(Util.java:404)

com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)

com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)

com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)

com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)

com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)

com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)

com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)

com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)

com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)

com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

不知道各位有没有出现这种情况?  如何解决? @JFinal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值