c3p0连接池连接泄漏检测

3 篇文章 0 订阅
2 篇文章 0 订阅

配置文件c3p0-config.xml中加入:
true
1
debugUnreturnedConnectionStackTraces 默认为false,如果此参数设置为true,当所有连接用完的时候,会以堆栈信息显示哪些代码使用
了连接。由于跟踪连接状态会产生额外的消耗,如果程序稳定,应该将此参数恢复为默认值false。
unreturnedConnectionTimeout 设置连接被checkout后,经过多长时间还未返还连接池,则连接缓冲池直接Kill该连接

设置完成后重现错误,可以观察到堆栈信息如下:
java.lang.Exception: DEBUG ONLY: Overdue resource check-out stack trace.
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:506)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at com.xinge.mms.push.jdbc.C3p0ConnectionProvider.getMms2Connection(C3p0ConnectionProvider.java:47)
at com.xinge.mms.push.manager.DBMms2Manager.isDetail(DBMms2Manager.java:78)
at com.xinge.mms.push.handler.IosMessageHandler.getAlert(IosMessageHandler.java:83)
at com.xinge.mms.push.handler.IosMessageHandler.sendMessage(IosMessageHandler.java:70)
at com.xinge.mms.push.apnstask.IosMessageProcessor4Test.run(IosMessageProcessor4Test.java:59)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)

从中可以看到DBMms2Manager.isDetail(DBMms2Manager.java:78),查看代码发现,其中获取连接使用完后未关闭,从而造成连接泄漏

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值