JDBC連線引數
JDBC連線池的設定:Intial Capcity、Maximum Capacity、Capcity Increment、Allow Shrinking、Test Reserved Connections、Test Created Connections、Test Released Connections、Inactive Connection Timeout
[@more@]JDBC連線池的設定最主要的是Intial Capcity和Maximum Capacity兩個屬性。下面對於JDBC連線池的幾個屬性及最佳化配置方案進行描述:Initial Capacity: 初始容量,即WebLogic Server在建立連線池的時候建立的連線數量
Maximum Capacity: 最大容量,即WebLogic Server允許的在這個連線池中的連線的最大數量。
通 常,初始容量和最大容量設定為相等,並且不小於執行執行緒的數量。如果你的應用中配置了自定義執行執行緒佇列,那麼就要計算全部的用來給應用工作的執行緒的數 量。如此設定才能夠起到Pool的作用,避免在應用執行過程中出現建立JDBC連線的請求。因為建立JDBC連線對於WebLogic Server和資料庫伺服器來說,都是開銷比較大的動作。如果應用中存在在一個執行緒中獲取多個連線的情況,那麼初始容量和最大容量應該大於執行執行緒的數 量,甚至需要成倍增加。比如下面的JSP程式碼就會導致一個執行緒工作佔用2個連線:
ctx = new InitialContext();
ds = (DataSource)ctx.lookup(”lab.ds.pbjade”);
conn = ds.getConnection();
// do some query operations
conn2 = ds.getConnection();
// do some query operations
以 上這段程式碼,在執行過程中,第一個連線conn關閉之前,又獲取了第二個連線conn2,這樣一來,這個JSP頁面在執行的時候(由一個執行緒來執行),會 同時獲取2個連線,連線池容量的最最佳化設定是執行執行緒的數量的2倍。因為在極端情況下,如果在同一時刻,所有的請求都指向這個頁面,那麼就需要執行執行緒數 量2倍的連線才不會出現連線等待。
Capcity Increment: 增長步長。如果初始容量和最大容量不相等,並且需要更多的連線時,WebLogic Server一次建立新連線的數量。
Allow Shrinking: 允許自動收縮。如果連線池的初始容量和最大容量不相等,那麼當池中的連線大於初始容量時,經過Shrink Frequency時間,如果連線池中的活動連線不高於初始容量個,那麼連線池中連線的數量會減少到初始容量大。
上面這幾個引數是配置相關的,通常Initial Capacity=Maximum Capacity 並且>=執行執行緒的數量,並且不選擇Allow Shrinking選項,避免不必要的週期檢查。
如 果WebLogic Server和資料庫伺服器之間的網路連線不穩定,或者兩個伺服器之間存在防火牆,導致JDBC連線不穩定,WebLogic Server還提供了一些測試策略以儘量保證應用難道的連線是有效的。主要有3個選項:Test Reserved Connections、Test Created Connections、Test Released Connections。測試的時機分別是應用獲取連線、WebLogic Server建立連線、應用釋放連線。通常這3個選項只需選擇Test Reserved Connections即可,無需全部選擇。根據測試資料,可能會有3%左右的效能下降。所以如果不是必要,也不必使用這些選項。
在 使用JDBC連線池的過程中,最常見的一個問題就是連線池洩漏問題。一個池裡面的資源是有限的,應用用完之後應該還回到池中,否則池中的資源會被耗盡。 WebLogic Server提供了一個Inactive Connection Timeout選項,預設是60秒,如果一個連線被應用拿走之後,超過這個時間還沒有還回來,WebLogic Server會強制將這個連線回收。如果應用中不存在連線洩漏的問題,則不需要這個選項。設定為0即可禁用。
總結一下,連線池的設定相對比較簡單,主要是初始容量及最大容量兩個引數。其他的選項不需要的可以去掉,避免不必要的效能開銷。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21645448/viewspace-1023264/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JDBC連線資料庫時,Oracle9i的連線引數配置JDBC資料庫Oracle
- JDBC連線mysqlJDBCMySql
- jdbc連線oracleJDBCOracle
- JDBC連線大全JDBC
- MySQL 連線相關引數MySql
- JDBC的連線引數的設定導致rowid自動新增到sqlJDBCSQL
- JDBC 連線詳解JDBC
- Java JDBC連線MYsqlJavaJDBCMySql
- jdbc 連線 oracle racJDBCOracle
- 連線PostgreSQL時,如何指定引數SQL
- JDBC連線資料庫JDBC資料庫
- powerdesigner jdbc 連線 oracleJDBCOracle
- 應用JDBC連線SQLiteJDBCSQLite
- JDBC Driver連線方法列表JDBC
- JDBC連線ORACLE問題JDBCOracle
- ConnectionManager 管理JDBC連線JDBC
- 連線zk 報錯連線不上hbase jdbcJDBC
- [zt] JDBC連線Oracle RAC的連線串配置JDBCOracle
- DBCP連線池配置引數說明
- 【JDBC】java連線池模擬測試 連線oracleJDBCJavaOracle
- 【JDBC】使用OracleDataSource建立連線池用於連線OracleJDBCOracle
- java Jdbc連線oracle資料庫連線測試JavaJDBCOracle資料庫
- Tomcat 的 JDBC 連線池TomcatJDBC
- java jdbc連線資料庫JavaJDBC資料庫
- derby 的配置及jdbc連線JDBC
- JDBC 連線oracle三種方法JDBCOracle
- jdbc連線mysql問題-helpJDBCMySql
- tomcat 配置JDBC連線池TomcatJDBC
- Oracle JDBC ResultSet引數測試OracleJDBC
- Mysql JDBC Url引數說明MySqlJDBC
- 建立 MQTT 連線時如何設定引數?MQQT
- [轉帖]HikariCP連線池引數解釋
- jdbc連線elasticsearch6.3.0demo展示JDBCElasticsearch
- 【JavaWeb】JDBC連線MySQL資料庫JavaWebJDBCMySql資料庫
- JDBC之連線sqlserver資料庫JDBCSQLServer資料庫
- JDBC連線資料庫步驟JDBC資料庫
- java 連線oracle (jdbc-odbc橋)JavaOracleJDBC
- JDBC連線資料庫經驗JDBC資料庫