我已經配置Tomcat的DBCP爲:DBCP Tomcat的連接池removeAbandoned不工作
<Resource
name="jdbc/myoracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
username="abc"
password="abc"
maxActive="20"
maxIdle="4"
minIdle="0"
maxWait="4"
removeAbandoned="true"
logAbandoned="true"
removeAbandonedTimeout="3"
/>
我不知道,我已經定義了上面的設置正確與否。 我正在使用struts 2,一個網頁有菜單鏈接,這是調用動作類,我正在執行所有數據庫操作和打開/關閉連接從/到池。 問題是,如果我連續不斷地點擊菜單鏈接說40-50次,連接增加的地方,如單擊鼠標,然後等待響應,做得很好(即不增加連接)。
只有連續瘋狂點擊,而無需等待單個響應使得連接上漲突然,而不是來恢復到初始值。 如果我的連接在操作類的某個地方泄漏,那麼爲什麼總是單擊鼠標,等待響應,然後再次點擊鼠標,這樣做總是很好? (連續點擊相同的菜單鏈接結果:) 正如我已經定義maxActive爲20,連接將持續到24(我記得),並在該池已耗盡,即新的連接/請求無限期地等待得到來自用盡池的連接。
這裏我的疑問是,爲什麼removeAbandoned沒有關閉連接,因爲我指定removeAbandonedTimeout = 3。 如果我假設我有一個連接內存泄漏或我沒有故意關閉任何連接,然後removeAbandoned會殺死所有那些打開的連接或不是?
或者我的DBCP設置或以上參數有任何問題嗎? 請幫我解決這個問題。
我試着增加一些值,但仍然是一樣的。 我明白removeAbandonedTimeout的值需要比no更多。運行任何數據庫操作所需的秒數,以避免連接中斷。 但是不removeAbandonedTimeout =「3」意味着關閉連接/或者將運行模式連接帶回池中? –
爲什麼在連續50-60次鼠標點擊之後,連接池會耗盡並停止分配更多連接? –
你的意思是說「增加一點價值」?問題是,所有的值都比默認值小得多(removeAbandonedTimeout = 60,maxActive = 100,maxIdle = maxActive = 100,minIdle = initialSize = 10,maxWait = 30000)。你有什麼具體的理由使用比默認值小得多的值?底線,如果你需要更多的連接,爲什麼不分配更多? –