1. 程式人生 > >Oracle叢集的Jdbc連線速度問題

Oracle叢集的Jdbc連線速度問題

最近系統的WEB訪問速度明顯下降, 撥弄許久, 暫時處理搞一段落, 但依然不就其因.  遂具其明, 文於下. 

兩臺Oracle資料庫伺服器建立叢集服務, 資料儲存磁碟陣列伺服器上. 初始的時候採用如下的資料庫連線字串進行資料庫的訪問, 並進行了Oracle資料庫的模擬故障測試, 即任意將其中一臺Oracle資料庫伺服器關閉, 叢集服務正常執行, 並且資料連線速度理想.

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST=(LOAD_BALANCE = ON)(FAILOVER = ON)(ADDRESS = (PROTOCOL = TCP)(HOST = ServerA)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = ServerB)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = DBServer)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 30)(DELAY = 5)))) 

然而系統執行一段時間後, ServerA伺服器因故障無法啟動, 進去不了系統, 於是關機. 之後系統的WEB操作速度明顯下降. 系統採用Jboss3作為WEB伺服器, 安裝在ServerB上.

寫簡單的Java指令碼, 採用以上的連線字串, 進行資料庫的查詢操作, 查詢操作速度正常. 通過PL/SQL訪問, 速度也正常. 多種嘗試也未能改善速度.

最後將以上的字串ServerA更改為ServerB, 後速度恢復正常.

暫時沒時間深入研究此變化的原因, 初步的結論認為:
1,  當前的連線方式為隨機命中方式, 每個連線請求將隨機的訪問ServerA和ServerB伺服器, 首次命中率降低.

 影響因素有:
a.   ServerA伺服器關機和開機但不啟動Oracle伺服器的差異;
b.   資料庫連線字串中ServerA和ServerB的前後次序差異;
c.   資料庫連線字串中的引數設定差異.
d.  其他差異;

處理措施:
I.   逐一嘗試調整資料連線字串的引數, 尋找最佳連線方式;
II.  建立故障處理機制, 當資料庫出現故障(伺服器效能出現明顯差異或其中一臺停止服務)的時候, 及時調整資料庫連線字串, 平衡服務請求, 充分發揮伺服器效能.