2009-07-06 58 views
0

我在我的tomcat容器中使用帶有JNDI的Apache DBCP來連接到mysql數據庫。一切工作正常,但我看到的問題是,一旦pconnection彙集它永遠不會被釋放。所以在負載尖峯連接後,他們永遠在睡覺。他們是否通過context.xml參數來縮小池?這裏是我的ocnfiguration:如何縮小DB連接池?

 defaultAutoCommit="false" 
     defaultTransactionIsolation="REPEATABLE_READ" 
     auth="Container" 
     type="javax.sql.DataSource" 
     logAbandoned="true" 
     removeAbandoned="true" 
     removeAbandonedTimeout="300" 
     maxActive="-1" 
     initialSize="15" 
     maxIdle="10" 
     maxWait="10000" 
     username="user" 
     password="password" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost/mydb"/> 

回答

2

嘗試設置minEvictableIdleTimeMillis到比其默認值,即1000*60*30較低的值。

+1

您還需要設置以下屬性:testWhileIdle,timeBetweenEvictionRunsMillis,validationQuery – 2009-07-06 06:42:53

1

嘗試使用C3P0連接pool` ~~

+0

事實上,它至少比DBCP好。參數名稱很容易理解。你的文章沒有試圖解決手頭的問題:)。反正+1 – 2009-07-06 06:44:55

1

在可比的情況下,我已經使用Tomcat的JMX適配器來調整連接池的設置。這可以同時用於增加和減小池的大小。因此,至少在生產環境中啓用對servlet容器的JMX遠程訪問是一個好主意,只是爲了在特殊的操作情況下有機會作出反應。