CP30資料連線池死鎖
和很多網友一樣,碰到了死鎖的這個問題,資訊類似如下:
WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@4b9cafa7 -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
通過中介軟體的日誌發現:中介軟體多個應用在同時啟動時,肯定報這個警告;有兩臺伺服器在凌晨4點左右,幾乎同時報這個警告。奇怪的是,貌似業務沒有受到影響。之後,在網上查詢了很多資料和部落格,貌似沒用。這裡想說的是,解決問題還是要從自身的應用環境出發;在進行測試時,儘量模擬真實的環境,不要只是能用就行。
既然,中介軟體多個應用在同時啟動時,肯定報這個警告,那就模擬一下。在eclipse中,同時啟動三個同一個測試用例(三個不同的程式);果然,三個測試用例都報了這個警告。為什麼呢?因為中介軟體使用的是,我提供的介面,自然C3P0的配置檔案也是一樣的;如果說,這裡邊有什麼衝突的話,那就是這些資料來源的名稱是相同了。修改後,在資料來源的名稱後面加上一些隨機字元,再次進行測試,啟動就沒有報這個錯誤了。再在中介軟體的伺服器上進行測試,啟動沒有報這個警告了。
一些網友,也提到C3P0在配置多資料來源時,容易出現死鎖的問題,下面給出一個部落格連結:http://www.2cto.com/database/201411/349966.html
另外,在配置連線池單例時,在多執行緒獲取連線時,也容易出現獲取連線超時的問題,你可以需要按照下面這樣修改程式碼:
- public <span style="color:#ff0000;">synchronized</span> final Connection getConnection() {
- try {
- return ds.getConnection();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return null;
- }
相關文章
- 資料庫連線池資料庫
- 《四 資料庫連線池原始碼》手寫資料庫連線池資料庫原始碼
- 資料庫連線池-Druid資料庫連線池原始碼解析資料庫UI原始碼
- 資料庫連線池原理資料庫
- Proxool資料庫連線池資料庫
- JAVA資料庫連線池Java資料庫
- 資料來源連線池
- jsp 資料連線池JS
- Flask資料庫連線池Flask資料庫
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- python資料庫連線池Python資料庫
- 手寫資料庫連線池資料庫
- 瞭解資料庫連線池資料庫
- 資料庫連線池的理解資料庫
- 資料庫連線池的使用資料庫
- 資料庫連線池淺析資料庫
- WASCE的資料庫連線池資料庫
- JNDI配置資料庫連線池資料庫
- PROXOOL資料庫連線池使用資料庫
- 關於資料庫連線池資料庫
- .net 資料庫連線池配置資料庫
- Javaweb-資料庫連線池JavaWeb資料庫
- 資料庫連線池實現資料庫
- 資料訪問連線池和執行緒池執行緒
- MySql資料庫連線池專題MySql資料庫
- JavaWeb之事務&資料庫連線池JavaWeb資料庫
- mysql資料庫連線池配置教程MySql資料庫
- Python資料庫連線池DButilsPython資料庫
- 聊聊資料庫連線池 Druid資料庫UI
- JDBC資料庫連線池實現JDBC資料庫
- 資料庫連線池的工作原理資料庫
- 利用weblogic的POOL(連線池)連線資料庫 (轉)Web資料庫
- 帶你進入資料庫連線池資料庫
- 資料庫連線池技術詳解資料庫
- 淺談JDBC和資料庫連線池JDBC資料庫
- java資料庫連線池dbcp的使用Java資料庫
- DBCP 資料連線池的配置和使用
- [求助]資料庫連線池配置問題資料庫