maxWait 連接池中連接用完時,新的請求等待時間,毫秒
timeBetweenEvictionRunsMillis timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis一起使用,每
timeBetweenEvictionRunsMillis毫秒秒檢查一次連接池中空閑的連接,把空閑時間超過minEvictableIdleTimeMillis毫秒的連接斷開,直到連接池中的連接數到minIdle為止
minEvictableIdleTimeMillis 連接池中連接可空閑的時間,毫秒
removeAbandoned true,false,是否清理removeAbandonedTimeout秒沒有使用的活動連接,清理后並沒有放回連接池
removeAbandonedTimeout 活動連接的最大空閑時間
logAbandoned true,false,連接池收回空閑的活動連接時是否打印消息
minEvictableIdleTimeMillis,removeAbandonedTimeout這兩個參數針對的連接對象不一樣,minEvictableIdleTimeMillis針對連接池中的連接對象,removeAbandonedTimeout針對未被close的活動連接.
在配置時,主要難以理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait這四個參數,設置了rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的時候,系統會進行無效的Connection的回收,回收的Connection為removeAbandonedTimeout(默認300秒)中設置的秒數后沒有使用的Connection,激活回收機制好像是getNumActive()=getMaxActive()-2。 :) logAbandoned=true的話,將會在回收事件后,在log中打印出回收Connection的錯誤信息,包括在哪個地方用了Connection卻忘記關閉了,在調試的時候很有用。
在這里私人建議maxWait的時間不要設得太長,maxWait如果設置太長那么客戶端會等待很久才激發回收事件
http://blog.csdn.net/feiyu8607/article/details/6551991
validationQuery
DBCP提供的validationQuery參數進行連接的預檢測,它會在與連接池交互的過程中加入一些鈎子,定點執行validationQuery指定的SQL語句,如果SQL語句執行成功,表示此連接有效,分配給應用,如果執行失敗,則丟棄此連接,這種方法還能應對網絡故障等問題造成的MySQL連接失效問題。其他的一些方法,比如空閑連接檢測,樂觀獲取連接等方式,都無法保證完全對應用透明,應用還是能感知到數據庫操作失敗。
minEvictableIdleTimeMillis
連接池中連接,在時間段內一直空閑, 被逐出連接池的時間
timeBetweenEvictionRunsMillis
在構造GenericObjectPool [BasicDataSource在其createDataSource () 方法中也會使用GenericObjectPool]時,會生成一個內嵌類Evictor,實現自Runnable接口。如果timeBetweenEvictionRunsMillis大於0,每過 timeBetweenEvictionRunsMillis毫秒Evictor會調用evict()方法,檢查連接池中的連接的閑置時間是否大於 minEvictableIdleTimeMillis毫秒(_minEvictableIdleTimeMillis小於等於0時則忽略,默認為30分鍾),是則銷毀此對象,然后調用ensureMinIdle方法檢查確保池中對象個數不小於_minIdle。如果連接池的連接數小於最小空閑連接數,則創建數據庫連接,同時檢查連接池的連接是否小於maxIdle,是則把剛創建的連接放入連接池中,否則銷毀此對象。
http://blog.csdn.net/qyy333/article/details/17920051
https://github.com/xetorthio/jedis/issues/937
redis之如何配置jedisPool參數