DBCP連線池配置引數說明
- <!-- 資料來源1 -->
- <bean id="dataSource"
- class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://192.168.0.109:3306/test?useUnicode=true&characterEncoding=UTF-8"/>
- <property name="username" value="root"/>
- <property name="password" value="root"/>
- <!--maxActive: 最大連線數量-->
- <property name="maxActive" value="150"/>
- <!--minIdle: 最小空閒連線-->
- <property name="minIdle" value="5"/>
- <!--maxIdle: 最大空閒連線-->
- <property name="maxIdle" value="20"/>
- <!--initialSize: 初始化連線-->
- <property name="initialSize" value="30"/>
- <!-- 連線被洩露時是否列印 -->
- <property name="logAbandoned" value="true"/>
- <!--removeAbandoned: 是否自動回收超時連線-->
- <property name="removeAbandoned" value="true"/>
- <!--removeAbandonedTimeout: 超時時間(以秒數為單位)-->
- <property name="removeAbandonedTimeout" value="10"/>
- <!--maxWait: 超時等待時間以毫秒為單位 1000等於60秒-->
- <property name="maxWait" value="1000"/>
- <!-- 在空閒連線回收器執行緒執行期間休眠的時間值,以毫秒為單位. -->
- <property name="timeBetweenEvictionRunsMillis" value="10000"/>
- <!-- 在每次空閒連線回收器執行緒(如果有)執行時檢查的連線數量 -->
- <property name="numTestsPerEvictionRun" value="10"/>
- <!-- 1000 * 60 * 30 連線在池中保持空閒而不被空閒連線回收器執行緒-->
- <property name="minEvictableIdleTimeMillis" value="10000"/>
- <property name="validationQuery" value="SELECT NOW() FROM DUAL"/>
- </bean>
下面的註釋為轉來的。很詳細
tomcatde DHCP的配置
<Resource driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
logAbandoned="true" maxActive="20" maxIdle="2" maxWait="5000" name="system"
removeAbandonedTimeout="60" removeAbandoned="true"
password="xx" type="javax.sql.DataSource"
url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=base"
username="sa"/>
當中的
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="60"
就是用來配置資料庫斷開後自動連線的。
資料庫連線池會在啟動時就建立所需的若干連線,並一直保持連線狀態,
但是當資料庫服務停止後,這些連線就被外部因素給中斷了
網上優化了的配置資訊:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driverClassName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<!--initialSize: 初始化連線-->
<property name="initialSize" value="5"/>
<!--maxIdle: 最大空閒連線-->
<property name="maxIdle" value="10"/>
<!--minIdle: 最小空閒連線-->
<property name="minIdle" value="5"/>
<!--maxActive: 最大連線數量-->
<property name="maxActive" value="15"/>
<!--removeAbandoned: 是否自動回收超時連線-->
<property name="removeAbandoned" value="true"/>
<!--removeAbandonedTimeout: 超時時間(以秒數為單位)-->
<property name="removeAbandonedTimeout" value="180"/>
<!--maxWait: 超時等待時間以毫秒為單位 6000毫秒/1000等於60秒-->
<property name="maxWait" value="3000"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>
</bean>
dbcp配置中文版本,自apache 官方文件
原文請見http://commons.apache.org/dbcp/configuration.html。
引數 描述
username 傳遞給JDBC驅動的用於建立連線的使用者名稱
password 傳遞給JDBC驅動的用於建立連線的密碼
url 傳遞給JDBC驅動的用於建立連線的URL
driverClassName 使用的JDBC驅動的完整有效的java 類名
connectionProperties 當建立新連線時被髮送給JDBC驅動的連線引數,
格式必須是 [propertyName=property;]*
注意 :引數user/password將被明確傳遞,所以不需要包括在這裡。
引數 預設值 描述
defaultAutoCommit true 連線池建立的連線的預設的auto-commit狀態
defaultReadOnly driver default 連線池建立的連線的預設的read-only狀態.
如果沒有設定則setReadOnly方法將不會被呼叫. (某些驅動不支援只讀模式,比如:Informix)
defaultTransactionIsolation driver default 連線池建立的連線的預設的TransactionIsolation狀態.
下面列表當中的某一個: (參考javadoc)
* NONE
* READ_COMMITTED
* READ_UNCOMMITTED
* REPEATABLE_READ
* SERIALIZABLE
defaultCatalog 連線池建立的連線的預設的catalog
引數 預設值 描述
initialSize 0 初始化連線:連線池啟動時建立的初始化連線數量,1.2版本後支援
maxActive 8 最大活動連線:連線池在同一時間能夠分配的最大活動連線的數量,
如果設定為非正數則表示不限制
maxIdle 8 最大空閒連線:連線池中容許保持空閒狀態的最大連線數量,超過的空閒連線將被釋放,
如果設定為負數表示不限制
minIdle 0 最小空閒連線:連線池中容許保持空閒狀態的最小連線數量,低於這個數量將建立新的連線,
如果設定為0則不建立
maxWait 無限 最大等待時間:當沒有可用連線時,連線池等待連線被歸還的最大時間(以毫秒計數),
超過時間則丟擲異常,如果設定為-1表示無限等待
引數 預設值 描述
validationQuery SQL查詢,用來驗證從連線池取出的連線,在將連線返回給呼叫者之前.如果指定,
則查詢必須是一個SQL SELECT並且必須返回至少一行記錄
testOnBorrow true 指明是否在從池中取出連線前進行檢驗,如果檢驗失敗,
則從池中去除連線並嘗試取出另一個.
注意: 設定為true後如果要生效,validationQuery引數必須設定為非空字串
testOnReturn false 指明是否在歸還到池中前進行檢驗
注意: 設定為true後如果要生效,validationQuery引數必須設定為非空字串
testWhileIdle false 指明連線是否被空閒連線回收器(如果有)進行檢驗.如果檢測失敗,
則連線將被從池中去除.
注意: 設定為true後如果要生效,validationQuery引數必須設定為非空字串
timeBetweenEvictionRunsMillis -1 在空閒連線回收器執行緒執行期間休眠的時間值,以毫秒為單位.
如果設定為非正數,則不執行空閒連線回收器執行緒
numTestsPerEvictionRun 3 在每次空閒連線回收器執行緒(如果有)執行時檢查的連線數量
minEvictableIdleTimeMillis 1000 * 60 * 30 連線在池中保持空閒而不被空閒連線回收器執行緒
(如果有)回收的最小時間值,單位毫秒
引數 預設值 描述
poolPreparedStatements false 開啟池的prepared statement 池功能
maxOpenPreparedStatements 不限制 statement池能夠同時分配的開啟的statements的最大數量,
如果設定為0表示不限制
這裡可以開啟PreparedStatements池. 當開啟時, 將為每個連線建立一個statement池,
並且被下面方法建立的PreparedStatements將被快取起來:
* public PreparedStatement prepareStatement(String sql)
* public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
注意: 確認連線還有剩餘資源可以留給其他statement
引數 預設值 描述
accessToUnderlyingConnectionAllowed false 控制PoolGuard是否容許獲取底層連線
如果容許則可以使用下面的方式來獲取底層連線:
Connection conn = ds.getConnection();
Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate();
...
conn.close();
預設false不開啟, 這是一個有潛在危險的功能, 不適當的編碼會造成傷害.
(關閉底層連線或者在守護連線已經關閉的情況下繼續使用它).請謹慎使用,
並且僅當需要直接訪問驅動的特定功能時使用.
注意: 不要關閉底層連線, 只能關閉前面的那個.
引數 預設值 描述
removeAbandoned false 標記是否刪除洩露的連線,如果他們超過了removeAbandonedTimout的限制.
如果設定為true, 連線被認為是被洩露並且可以被刪除,如果空閒時間超過removeAbandonedTimeout.
設定為true可以為寫法糟糕的沒有關閉連線的程式修復資料庫連線.
removeAbandonedTimeout 300 洩露的連線可以被刪除的超時值, 單位秒
logAbandoned false 標記當Statement或連線被洩露時是否列印程式的stack traces日誌。
被洩露的Statements和連線的日誌新增在每個連線開啟或者生成新的Statement,
因為需要生成stack trace。
如果開啟"removeAbandoned",那麼連線在被認為洩露時可能被池回收. 這個機制在(getNumIdle() < 2)
and (getNumActive() > getMaxActive() - 3)時被觸發.
舉例當maxActive=20, 活動連線為18,空閒連線為1時可以觸發"removeAbandoned".
但是活動連線只有在沒有被使用的時間超過"removeAbandonedTimeout"時才被刪除,預設300秒.
在resultset中游歷不被計算為被使用.
相關文章
- tomcat自帶連線池dbcp配置以及最佳化說明Tomcat
- 常用資料庫連線池 (DBCP、c3p0、Druid) 配置說明資料庫UI
- DBCP 資料連線池的配置和使用
- DBCP連線池原理分析
- Elasticsearch 引數配置說明Elasticsearch
- kafka 引數配置說明Kafka
- java資料庫連線池dbcp的使用Java資料庫
- Nginx的gzip配置引數說明Nginx
- 【MySQL】SemisynchronousReplication配置和引數說明MySql
- Redis配置檔案引數說明Redis
- 【MySQL】Semisynchronous Replication 配置和引數說明MySql
- 資料庫連線池優化配置(druid,dbcp,c3p0)資料庫優化UI
- PHP擴充套件資料庫連線引數說明詳解PHP套件資料庫
- Druid連線池引數maxWait配置錯誤引發的問題UIAI
- 【cartographer_ros】七: 主要配置引數說明ROS
- [Nginx] - nginx 基本配置與引數說明(轉)Nginx
- TOP引數說明
- mysqldump引數說明MySql
- mysqldump 引數說明MySql
- MySQL引數說明MySql
- [轉帖]HikariCP連線池引數解釋
- 從原始碼分析DBCP資料庫連線池的原理原始碼資料庫
- Oracle 連線池配置Oracle
- Resin 配置連線池
- proxool連線池 配置
- GoldenGate 配置文件,裡面有引數說明Go
- Kafka 配置引數彙總及相關說明Kafka
- redis 3.0 引數說明Redis
- golden gate 引數說明Go
- oracle引數說明(zt)Oracle
- Lucene原始碼解析--IndexWriterConfig配置引數說明原始碼Index
- Java虛擬機器(JVM)引數配置說明薦Java虛擬機JVM
- Hibernate連線池配置
- 求教怎樣使用commons-dbcp元件的連線池問題元件
- 連線池和連線數詳解
- Oracle Table建立引數說明Oracle
- Oracle Table 建立引數 說明Oracle
- mysqldump引數詳細說明MySql