2010-11-03 246 views
3
<Resource name="myConn" auth="Container" 
       type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" 
       url="jdbc:oracle:thin:@10.10.10.10.:1521:mydb" 
       username="username" password="password" maxActive="500" maxIdle="50" 
       maxWait="-1" removeAbandoned="true" removeAbandonedTimeout="60"  logAbandoned="true" accessToUnderlyingConnectionAllowed="true" 
/> 

我正在嘗試查找連接未關閉的應用程序區域。我在我的上下文文件中添加了removeAbandoned和logAbandoned子句,但是如果我在oracle上檢查v $ session,即使在60秒後仍然顯示相同數量的活動連接。上面的配置有什麼問題嗎?DBCP Tomcat連接池泄漏

回答

2

我會將maxActive設置爲更小的值,例如50,然後檢查配置是否正常工作。 根據the docs的連接池必須所剩無幾執行檢查被遺棄的連接:

當可用DB連接低位運行 DBCP將回收和再利用其發現的任何 拋棄數據庫連接。

我也將removeAbandonedTimeout更改爲20,以便您不必等待很長時間才能檢查探測器是否工作正常。

+0

嗨,謝謝你。你指的是哪個文件?我正在看這個文檔http://commons.apache.org/dbcp/configuration.html,但不能找到你提到的那一點 – ziggy 2010-11-03 15:32:57

+0

對不起,我忘了鏈接到文檔(http://tomcat.apache.org/tomcat -5.5-DOC/JNDI-數據源-例子-howto.html)。我已經糾正了答案。 – 2010-11-03 15:35:25