在配置dbcp連線池時,主要難以理解的主要有:removeabandoned 、logabandoned、removeabandonedtimeout、maxwait這四個引數,設定了rmoveabandoned=true那麼在getnumactive()快要到getmaxactive()的時候,系統會進行無效的connection的**,**的connection為removeabandonedtimeout(預設300秒)中設定的秒數後沒有使用的connection,啟用**機制好像是getnumactive()=getmaxactive()-2。
如果開啟"removeabandoned",那麼連線在被認為洩露時可能被池**. 這個機制在(getnumidle() < 2) and (getnumactive() > getmaxactive() - 3)時被觸發.
舉例當maxactive=20, 活動連線為18,空閒連線為1時可以觸發"removeabandoned".但是活動連線只有在沒有被使用的時間超過"removeabandonedtimeout"時才被刪除,預設300秒.在resultset中遊歷不被計算為被使用.
logabandoned=true的話,將會在**事件後,在log中列印出**connection的錯誤資訊,包括在哪個地方用了connection卻忘記關閉了,在除錯的時候很有用。
在這裡私人建議maxwait的時間不要設得太長,maxwait如果設定太長那麼客戶端會等待很久才激發**事件。
以下是我的配置的properties檔案:
#連線設定
jdbc.driverclassname=oracle.jdbc.driver.oracledriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:dbserver
jdbc.username=user
jdbc.password=pass
#datasource.initialsize=10
#datasource.maxidle=20
#datasource.minidle=5
#最大連線數量
datasource.maxactive=50
#是否在自動**超時連線的時候列印連線的超時錯誤
datasource.logabandoned=true
#是否自動**超時連線
datasource.removeabandoned=true
#超時時間(以秒數為單位)
datasource.removeabandonedtimeout=180
#datasource.maxwait=1000
hibernate連線池引數說明
池配置屬性 所指定的內容 initialsize 池啟動時建立的連線數量 maxactive 同一時間可從池中分配的最多連線數,如果設定為0,表示無限制 maxidle 池裡不會被釋放的最多空閒連線數,如果設定為0,表示無限制 maxopenpreparedstatements 在同一時間能夠從語句...
tomcat jdbc 連線池 引數說明
mysql資料庫連線驅動 資料庫連線url url jdbc mysql localhost 3306 grtg useunicode true characterencoding utf8 資料庫連線驅動 driver com.mysql.jdbc.driver 資料庫連線使用者名稱 userna...
DBCP連線池配置
連線池中的maxidle,maxactive,maxwait引數 maxidle 是最大的空閒連線數,這裡取值為20,表示即使沒有資料庫連線時依然可以保持20空閒的 設為0表示無限制。maxactive,連線池的最大資料庫連線數。設為0表示無限制。maxwait 最大建立連線等待時間。如果超過此時間...