天天看點

Tomcat JDBC Pool使用說明

最新版本為9.0,推薦使用8.5.9穩定版

連接配接池配置項很多,下面隻列出了推薦配置,項目組可根據自身情況進行增減

推薦參數值:(隻用于通路量不是很高的項目,項目組根據情況調整)

屬性名

描述

預設值

driverClassName

使用者名

-

url

密碼

username

建立連接配接的url

password

資料庫驅動的完整類名

initialSize

連接配接器啟動時建立的初始連接配接數

10

maxActive

最大連接配接數,通常為正常通路的最大資料庫并發數,建議根據後期jmx監控逐漸調優

100

maxIdle

最大空閑連接配接數,比較難把握的一個參數,許多連接配接池也已經移除了此屬性(如Druid),通路峰值比較集中的系統如考勤可以設定小一點節省大部分時段的連接配接資源,過小也可能導緻連接配接頻繁建立關閉也會影響性能,建議一般系統不低于maxActive的50%

minIdle

最小連接配接數,一般與initialSize一緻即可

maxWait

連接配接池中連接配接用完時,新的請求的等待時間,逾時傳回異常,機關毫秒

預設30000

testWhileIdle

連接配接進入空閑狀态時是否經過空閑對象驅逐程序同時進行校驗,推薦的校驗方法,依賴validationQuery

false

validationQuery

在連接配接傳回給調用者前用于校驗連接配接是否有效的SQL語句,必須為一個SELECT語句,且至少有一行結果

validationQueryTimeout

連接配接驗證的逾時時間,機關秒,注:池本身并不會讓查詢逾時,完全是依靠JDBC驅動來強制查詢逾時

validationInterval

TomcatJDBC特有屬性,檢查連接配接可用性的時間間隔,防止testOnBorrow和testOnReturn為true時檢查過于頻繁,機關毫秒

30000

timeBetweenEvictionRunsMillis

空閑對象驅逐檢查時間間隔,機關毫秒

5000

minEvictableIdleTimeMillis

連接配接被空閑對象驅逐程序驅逐前在池中保持空閑狀态的最小時間,機關毫秒

60000

defaultAutoCommit

連接配接池所建立的連接配接預設自動送出狀态(JDBC預設值意思是預設不會調用setAutoCommit方法)

JDBC預設值

jmxEnabled

是否利用 JMX 注冊連接配接池

true

jdbcInterceptors

TomcatJDBC特有屬性, QueryTimeoutInterceptor(查詢逾時攔截器,屬性queryTimeout,機關秒,預設1秒),SlowQueryReport(慢查詢記錄,屬性threshold逾時紀錄門檻值機關毫秒,預設1000),多個用攔截器用;分隔,示例:QueryTimeoutInterceptor(queryTimeout=5);SlowQueryReport(threshold=3000)注:當新語句建立時,自動調用Statement.setQueryTimeout(seconds)。池本身并不會讓查詢逾時,完全是依靠JDBC驅動來強制查詢逾時,更詳細的資訊請檢視官方文檔

testOnBorrow

連接配接被調用時是否校驗,依賴validationQuery,對性能有一定影響,不推薦使用

testOnReturn

連接配接傳回到池中是時是否校驗,依賴validationQuery,對性能有一定影響,不推薦使用

removeAbandoned

是否清除已經超過 removeAbandonedTimeout 設定的連接配接,可用于排查一些事務未送出的問題(正式環境謹慎使用,對性能有一定影響),不推薦使用,可用QueryTimeOut攔截器替代

removeAbandonedTimeout

清除無效連接配接的時間,機關秒 與removeAbandoned聯合使用

60

defaultReadOnly

連接配接池建立的連接配接是否是否為隻讀,需要說明的是設定了true隻是告訴資料庫連接配接是隻讀,便于資料庫做一些優化(例如不安排資料庫鎖),并非不能執行更新操作,隻是對資料的一緻性的保護并不強而已(這跟spring的隻讀事務類似)

JDBC預設

 本文轉自 獨孤環宇 51CTO部落格,原文連結:http://blog.51cto.com/snowtiger/1966602