解決proxool連線oracle記憶體溢位的問題

2021-06-08 13:18:02 字數 919 閱讀 3153

proxool是乙個很優秀的開源連線池。我曾經比較過dbcp, c3p0 和 proxool 這三個連線池,閱讀和分析它們的**。相比之下,proxool 用了cglib,其原始碼顯得相當簡潔優雅。 但是很不幸,在這一次,記憶體洩漏的帳要算在它頭上。 我們使用的是proxool 的0.9.1的版本,環境是oracle jdbc5 + ibm jdk5。

0.9.1版本是proxool 的最新版本。我們有乙個應用據稱執行以來,就一直處於記憶體溢位的陰霾之中。追趕資料時的某些巨忙的系統可能會一天內死好些次,甚至達十幾次。不得不採用一些監控指令碼定時重啟。去年12月我接手以來,也被這個問題困擾,最糟糕的時候甚至某些硬體設施很好的部署例項的多達50+gb的堆也能在一天之內吃光。

貼一張簡單的圖,你就懂了:

if(proxyconnection !=

null&& proxyconnection.isreallyclosed()

){

修改後的114行:

if(proxyconnection !=

null&&

!concretemethod.getname

().equals

(finalize_method)

&& proxyconnection.isreallyclosed()

){

效果是很明顯的。一方面,記憶體消耗明顯降低。之前,所有的部署例項都會隔段時間就當掉,某些部署例項的52g的堆都會溢位!現在,系統再忙其堆大小也基本上在原來那個設得老大的xms引數之下。 第二方面,吞吐量忽然提高了許多,沒有煩人的**執行緒(其優先順序要高點)的干擾,當然應該要跑得更快些。

**:

Proxool的連線方法

解壓後,把commons logging.jar和proxool 0.9.0rc2.jar放到工程的lib資料夾裡面。方法一 和jdbc連線方法類似。jdbc連線方法 class.forname com.mysql.jdbc.driver 資料庫的驅動 connection con driverma...

pycharm連線linux系統oracle

1,本機安裝python3.xx 2,安裝pycharm 3,在pycharm新增cx oracle模組 4,如果裝包出現pip沒有找到main函式報錯,根據報錯的路徑,注釋掉import pip兩行。在 do install和do uninstall python連線oracle資料庫報錯 dat...

使用Proxool連線池

jdbc mysql 127.0.0.1 3306 student com.mysql.jdbc.driver 10select current date proxool.xml這個檔案是用來設定別名的。其中標籤就是別名的設定段。alias是別名 driver url是驅動的url,就是連線的url...