2
我使用的是c3p0(0.9.1.2)版本,一小时左右后我看到numUnclosedOrphanedConnections
以每小时1次的速度缓慢增加。 c3p0 docs said为什么c3p0中的numUnclosedOrphanedConnections增加?
numUnclosedOrphanedConnections将只在softReset()调用 后非零。它表示在发生软重置时检出的 的连接数,因此从池中排除了 ,并且其仍未被客户端 应用程序关闭。
为什么c3p0正在进行软复位?我的c3p0设置就像
initialPoolSize=1
minPoolSize=1
maxPoolSize=100
maxIdleTime=60
checkoutTimeout=5000
testConnectionOnCheckin=true
你跑什么样的环境?你跟踪numUnclosedOrphanedConnections vi JMX或编程?你有没有修改任何c3p0属性? (这样做会导致池的softReset(),以便修改后的属性值可以采用。)另一个需要注意的事情是如何关闭连接。 unclosedOrphanedConnections的单调上升表明Connections正在泄露。 –
我正在运行一个64位的Linux机器。 Jdk版本1.6.0_31。我正在通过JMX手动跟踪它。 c3p0属性不会被修改。有跟踪c3p0连接泄漏的好工具吗? –
是的。请参阅config params unreturnedConnectionTimeout和debugUnreturnedConnectionStackTraces(请参阅http://www.mchange.com/projects/c3p0/)注意,您必须将这些属性的BOTH设置为获取泄漏的堆栈痕迹。你是在自己的应用中嵌入c3p0,还是通过更大的库/应用服务器(hibernate,spring等)运行它?另一件事,只是为了让我感觉更好,是升级到最新版本,c3p0-0.9.2-pre5我不记得任何问题,可以解释你神秘的软复位,但自0.9.1以来改变了很多 –