1. 程式人生 > >DBCP連接池配置參數

DBCP連接池配置參數

-- 測試 配置 initial spa ini ebe 情況下 head

本文參考自:https://blog.csdn.net/zys_1997/article/details/78107783

首先,明確連接、活動連接(連接正被使用)、空閑連接的概念

創建連接

1、初始化 2、空閑連接低於最小空閑minIdle

銷毀連接

1、空閑連接數目高於最大空閑 2、活動連接被遺棄

回收行為

1、空閑連接回收器(定時執行)2、連接回收器(maxwait後觸發)

--------------------------

initialSize 初始化連接數,即連接池啟動時池子中的連接數目

maxActive 最大活動連接數,即連接池中可同時連接的最大數目

minIdle 最小空閑連接,連接池中最少的空閑的連接數,

低於這個數量時,意味著連接不夠用了,會被創建新的連接

默認為0,該參數越接近maxIdle,性能越好因為連接的創建和銷毀,都是需要消耗資源的

不宜太大,因為在機器很空閑的時候,也會創建低於minidle個數的連接,類似於jvm參數中的Xmn設置。

maxIdle 最大空閑連接

超過此參數時空閑連接將被釋放,如果設置為負數表示不限制

默認為8個,maxIdle不能設置太小,因為假如在高負載的情況下,連接的打開時間比關閉的時間快,會引起連接池中idle的個數上升超過maxIdle,而造成頻繁的連接銷毀和創建,類似於jvm參數中的Xmx設置

maxWait 請求連接時,最長的等待時間。

單位ms,當沒有可用連接時,連接池會等待連接釋放,超過該時間限制會拋出異常,如果設置-1表示無限等待(默認為無限)

validationQuery 驗證操作時使用得SQL語句

testWhileIdle 連接空閑時是否被空閑連接回收器(如果有)驗證

如果驗證失敗,將直接回收

testOnBorrow 連接被借走(取出使用)時需不需要驗證

默認值是true,即每次從連接池中取出連接時,都需要執行validationQuery中的SQL進行測試,這會導致性能下降7-10倍。

一般設為false,不要測試

--------------------

以下三者配合使用:

minEvictableIdleTimeMillis 連接空閑了多久會被空閑連接回收器回收

numTestsPerEvictionRun 空閑連接回收器每次檢查多少個連接

timeBetweenEvictionRunsMills 空閑連接回收器運行周期

每timeBetweenEvictionRunsMills運行一次空閑連接回收器(獨立線程)。

每次檢查numTestsPerEvictionRun個連接,如果連接空閑時間超過minEvictableIdleTimeMillis就先銷毀,之後如果小於minIdle數量,就新建連接,維護數量不少於minIdle,過行了新老更替。

--------------------

以下三者配合使用:

removeAbandonedTimeout 連接多久沒被使用即視為Abandoned,即連接泄漏

removeAbandoned 當active連接快到maxActive連接的時候,是否回收無效的連接回收

備註:maxWait的時間不要設得太長,maxWait如果設置太長那麽客戶端會等待很久才激發回收事件。

logAbandoned 回收事件後,是否在log中打印出回收Connection的錯誤信息,包括在哪個地方用了Connection卻忘記關閉了,在調試的時候很有用。
  

DBCP連接池配置參數