C3P0线程死锁问题探讨

摘要:
报错信息:inas]2019-01-1110:15:59,955WARN[C3P0PooledConnectionPoolManager[identityToken-˃2zioz0a0ga5qw7onzyne|10cbafaa]-AdminTaskTimer]ThreadPoolAsynchronousRunner.log(211)|com.mchange.v2.async.ThreadPoolA

报错信息:

C3P0线程死锁问题探讨第1张C3P0线程死锁问题探讨第2张
inas] 2019-01-11 10:15:59,955 WARN [C3P0PooledConnectionPoolManager[identityToken->2zioz0a0ga5qw7onzyne|10cbafaa]-AdminTaskTimer] ThreadPoolAsynchronousRunner.log(211) | com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@31e30824 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks![inas] 2019-01-11 10:15:59,960 WARN [C3P0PooledConnectionPoolManager[identityToken->2zioz0a0ga5qw7onzyne|10cbafaa]-AdminTaskTimer] ThreadPoolAsynchronousRunner.log(211) | com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@31e30824 -- APPARENT DEADLOCK!!!Complete Status: 
        Managed Threads: 3Active Threads: 3Active Tasks: 
                com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@18ca9de8
                        on thread: C3P0PooledConnectionPoolManager[identityToken->2zioz0a0ga5qw7onzyne|10cbafaa]-HelperThread-#0com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@760baa7c
                        on thread: C3P0PooledConnectionPoolManager[identityToken->2zioz0a0ga5qw7onzyne|10cbafaa]-HelperThread-#2com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@77e5ef6f
                        on thread: C3P0PooledConnectionPoolManager[identityToken->2zioz0a0ga5qw7onzyne|10cbafaa]-HelperThread-#1Pending Tasks: 
                com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1e44f70f
Pool thread stack traces:
        Thread[C3P0PooledConnectionPoolManager[identityToken->2zioz0a0ga5qw7onzyne|10cbafaa]-HelperThread-#2,5,main]
                java.net.SocketInputStream.socketRead0(Native Method)
                java.net.SocketInputStream.read(SocketInputStream.java:152)
                java.net.SocketInputStream.read(SocketInputStream.java:122)
                oracle.net.ns.Packet.receive(Unknown Source)
                oracle.net.ns.DataPacket.receive(Unknown Source)
                oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
                oracle.net.ns.NetInputStream.read(Unknown Source)
                oracle.net.ns.NetInputStream.read(Unknown Source)
                oracle.net.ns.NetInputStream.read(Unknown Source)
                oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1104)
                oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1075)
                oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:106)
                oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:465)
                oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1203)
                com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:642)
                com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:255)
                com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:621)
                com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1065)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
        Thread[C3P0PooledConnectionPoolManager[identityToken->2zioz0a0ga5qw7onzyne|10cbafaa]-HelperThread-#1,5,main]
                java.net.SocketInputStream.socketRead0(Native Method)
                java.net.SocketInputStream.read(SocketInputStream.java:152)
                java.net.SocketInputStream.read(SocketInputStream.java:122)
                oracle.net.ns.Packet.receive(Unknown Source)
                oracle.net.ns.DataPacket.receive(Unknown Source)
                oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
                oracle.net.ns.NetInputStream.read(Unknown Source)
                oracle.net.ns.NetInputStream.read(Unknown Source)
                oracle.net.ns.NetInputStream.read(Unknown Source)
                oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1104)
                oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1075)
                oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:106)
                oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:465)
                oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1203)
                com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:642)
                com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:255)
                com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:621)
                com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1065)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
        Thread[C3P0PooledConnectionPoolManager[identityToken->2zioz0a0ga5qw7onzyne|10cbafaa]-HelperThread-#0,5,main]
                java.net.SocketInputStream.socketRead0(Native Method)
                java.net.SocketInputStream.read(SocketInputStream.java:152)
                java.net.SocketInputStream.read(SocketInputStream.java:122)
                oracle.net.ns.Packet.receive(Unknown Source)
                oracle.net.ns.NSProtocol.connect(Unknown Source)
                oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:856)
                oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:268)
                oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
                oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
                oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
                oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
                com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:172)
                com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
                com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
                com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
                com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1127)
                com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1114)
                com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
                com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1855)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

[inas] 2019-01-11 10:16:03,779 INFO [http-bio-9090-exec-20] JdbcFTemplate.?(?) | ifId[srpt-cfg-menuQueryAsync]-sql[select ID_ "id_",NAME_ "name_",TYPE_ "type_" ,enabled "enabled",creator_ "creator" from dm_co_ba_srpt_menu t where PARENT_ID = '0' and enabled in('1','2','3','4') order by ID_],sqlParseUseTime[3ms]
[inas] 2019-01-11 10:16:03,874 DEBUG [http-bio-9090-exec-20] SmlServletBean.?(?) | sml request method[POST]-uri[/INAS/sml/query/srpt-enum-dataSource]
[inas] 2019-01-11 10:16:03,911 INFO [http-bio-9090-exec-20] JdbcFTemplate.?(?) | ifId[srpt-enum-dataSource]-sql[SELECT t.id_ "id_" ,t.name_ "name_"FROM DM_CO_BA_SRPT_DATA_SOURCE t order by id_ desc],sqlParseUseTime[0ms]
^C
View Code

问题来源过程:

1.过段时间突然出现线程死锁,

2.有时候启动也报这种错误。

问题分析:

1.数据库连接不上,

2,数据库负荷过高,

3.线程池配置不符合。

4.c3p0版本太低。

问题解决:

免责声明:文章转载自《C3P0线程死锁问题探讨》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇动态调用WebService(C#)java8两个集合取交集、并集与差集下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C3P0连接池

C3P0连接池: 最常用的连接池技术!Spring框架,默认支持C3P0连接池技术! C3P0连接池,核心类: CombopooledDataSource ds; 使用: 下载,引入jar文件: c3p0-0.9.1.2.jar 使用连接池,创建连接 a) 硬编码方式 b) 配置方式(xml) packagecom.loaderman.demo.d_...

Spring c3p0连接池无法释放解决方案

通过c3p0配置连接池的时候,在进行压力测试的时候,日志出现了这样一个错误:Data source rejected establishment of connection, message from server: “Too many connections” 数据库的连接过多。 然后查看mysql的最大连接数,为100。 于是便更改最大连接池。 由于...

C3P0数据库Jar包的使用

C3P0数据库Jar包的使用 0.导入数据库相关jar包 commons-dbutils-1.4.jar c3p0-0.9.1.2.jar 1.配置C3P0-config.xml文件 <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <!-- 数...

c3p0配置详解

数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理。 一、实现方式: C3P0有三种方式实现: 1.自己动手写代码,实现数据源 例如:在类路径下配置一个属性文件,config.properties,内容如下: driverClass=xxx jdbcUrl=xxx user=xxx pass...

Handler dispatch failed; nested exception is java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyResultSet.isClosed()Z is abstract

问题原因:本地用的c3p0为0.9.1.2版本,版本不兼容。 解决方法: maven方式:pom引用升级到 c3p0-0.9.5.5,并且加入 mchange-commons-java-0.2.19 的依赖。 lib方式:直接 下载c3p0-0.9.5.5.bin.zip,解压后将 c3p0-0.9.5.5lib 下的 c3p0-0.9.5.5.jar 和...

Hibernate用Mysql数据库时链接关闭异常的解决

在一个项目中,客户要求除操作系统外全部使用免费软件,因此我使用了Mysql 4.0作为数据库服务器,其JDBC驱动为3.0.9版本,在给客户安装后调试一切正常。可是到了第二天,只要一登录就提示“No operations allowed after connection closed”异常,显示在浏览器上。在经过一番检查后我发现,在这种情况下只要重新启动T...