dbcp1.4 bug

版本dbcp-1.4     commons-pool-1.5.4

原因未知

id=428, blockedCount=6128, blockedTime=0, waitedCount=48458, waitedTime=0, threadUserTime=3.39h, threadCpuTime=4.16h

"pool-3-thread-1" Id=428 TIMED_WAITING on org.apache.tomcat.dbcp.pool.impl.GenericObjectPool$Latch@79008449
at java.lang.Object.wait(Native Method)
-  waiting on org.apache.tomcat.dbcp.pool.impl.GenericObjectPool$Latch@79008449
at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1123)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:190)
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:271)
at ===========业务栈信息屏蔽=========================
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Number of locked synchronizers = 1
- java.util.concurrent.locks.ReentrantLock$NonfairSync@1b3dd747s
源码位置:





后台查明,由于一个特殊需求需要用到原生的connection,开发人员一直没有关闭连接,这个需求的功能偶尔使用一次,所以比较久才暴露。

如果用netstat看数据库连接数是不能发现的,tcp连接已关闭,但是pool不知道。以为一直还在使用。

猜你喜欢

转载自dingjun1.iteye.com/blog/1751702
bug