JDBC連接池參數:
jdbc.initialSize=0 //初始化連接
jdbc.maxActive=30 //連接池的最大數據庫連接數,設為0表示無限制
jdbc.maxIdle=20 //沒有人用連接的時候,最大閑置的連接個數,設置為0時,
表示沒有限制。
jdbc.maxWait=1000 //超時等待時間(以毫秒為單位)
jdbc.removeAbandoned=true //是否自動回收超時連接
jdbc.removeAbandonedTimeout=60 //設置被遺棄的連接的超時的時間(以秒數為單位),即當一個
連接被遺棄的時間超過設置的時間,則它會自動轉換成可利用
的連接。默認的超時時間是300秒。
jdbc.logAbandoned = true //是否在自動回收超時連接的時候打印連接的超時錯誤
jdbc.validationQuery=select 1 from dual //給出一條簡單的sql語句進行驗證
jdbc.testOnBorrow=true //在取出連接時進行有效驗證
在配置時,主要難理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait這四個參數
1)設置了rmoveAbandoned=true,那么在getNumActive()快要到getMaxActive()的時候,系統會進行無效的Connection的回收,回收的 Connection為removeAbandonedTimeout(默認300秒)中超出設置的秒數后沒有使用的Connection;
2)激活回收機制好像是getNumActive()=getMaxActive()-2, 有點忘了。
3)logAbandoned=true的話,將會在回收事件后,在log中打印出回收Connection的錯誤信息,包括在哪個地方用了Connection卻忘記關閉了,在調試的時候很有用。
4)在這里私人建議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
#<!-- 超時等待時間以毫秒為單位 6000毫秒/1000等於60秒 -->
dataSource.maxWait=1000