DBCP引數配置

2021-06-19 04:26:05 字數 1256 閱讀 2549

連線池引數我們一直未做優化,最近dba反應在資料庫端發現idle連線過多,影響正常連線。經過仔細研究、實踐,我們得出一套較合理的連線池(dbcp)的配置引數,給大家分享一下。希望其它各po按此引數調整線上tomcat的dbcp引數。

熱資料來源: maxactive="10" maxidle="3" minidle="2" maxwait="15000" timebetweenevictionrunsmillis="60000" minevictableidletimemillis="180000"

冷資料來源:maxactive="5" maxidle="2" minidle="1" maxwait="15000" timebetweenevictionrunsmillis="60000" minevictableidletimemillis="180000"

冷熱資料來源可以這麼分:前台訪問均為熱,後台管理端均為冷。當然,如果你某台機器worker較多,資料庫訪問頻繁,可以適當加大maxactive和maxidle值,但是不建議加大minidle值。還有個引數叫:initialsize。這個引數在server.xml中配置就要出錯,但是在context.xml中配置就正常使用(tomcat 6)。如果你的連線池配置在context.xml中,建議把initialsize引數加上,配置成和minidle一樣。

這麼配置後,還有個好處就是:有些防火牆會殺掉不動的連線,上面引數可以避免(mysql也會殺掉長期不活動的連線)。避免程式取出死連線,導致執行sql時出錯。

也許上面的引數並不是最優的,但是在pop這邊全面推廣後,並沒有發現什麼大問題。以下是基本情況截圖:

這個圖表示目前只有乙個在使用中,另外2個是空閒。乙個空閒時間為956ms,另外乙個空閒8160ms。

大部分的時候,active為0,idle為3。當然,我們重新整理的時候,也許連線池中大部分連線已經被使用過並返還了。根據觀察,在熱資料來源情況下,連線idle時間基本上沒有超過20s。

上圖是冷資料來源,連線總共才1個,實際上我們配置的maxidle為2個。所以引數設定的還是挺合理的。這裡還要注意一下。dbcp並不是tomcat一啟動就立即初始化連線,他是在第一次使用的時候初始化。所以,你完全可以在tomcat中配置多個資料來源,而不必擔心沒有使用到就會連線資料庫而導致浪費。

貼乙個系統生產環境配置. 

dbcp 引數詳解

username 連線使用者名稱 password 連線密碼 url 連線 url 如果連線 mysql 格式為 jdbc mysql ip port dbname driverclassname jdbc driver 名字 如果是 mysql 則為 com.mysql.jdbc.driver c...

轉貼 hibernate 配置 dbcp

hibernate屬性檔案的配置引數 連線池的最大活動個數 hibernate.dbcp.maxactive 100 當連線池中的連線已經被耗盡的時候,dbcp將怎樣處理 0 失敗,1 等待,2 增長 hibernate.dbcp.whenexhaustedaction 1 最大等待時間 hiber...

DBCP連線池配置詳解,引數列表

id datasource class org.apache.commons.dbcp.basicdatasource destroy method close name driverclassname value com.mysql.jdbc.driver name url value jdbc ...