經過一段時間的壓力測試以及實驗證明,前端 AP 透過 Bea WebLogic 8.1 sp3 的 Connection Pool 取得 JDBC Connection
為了證明是 Bea 的問題,我特地改寫程式,透過 Jakarta Commons DBCP 元件來取得 JDBC Connection,以便與原先程式透過 Bea ConnPool 取得連線的方式作為對照組。
下面是使用 Quest JProbe Memory Debugger 分別取得的 DBCP 與 WLS ConnPool 的 Heap Memory 曲線圖:
測試個案為持續發送 Online 簡訊,經過一個小時後觀察 Heap Memory 曲線。OnlineService 使用 WLS Connection Pool


再來看看 BatchService 的情形,測試個案是兩個批次 Job 各同時處理 10 萬筆簡訊
BatchService 使用 WLS Connection Pool

上了 Patch 之後,果然曲線就變得大不相同
OnlineService 使用 WLS Connection Pool + WLS8.1 sp3 patch
BatchService 使用 WLS Connection Pool + WLS8.1 sp3 patch
所以如果使用 WLS 8.1 sp3 的人,請小心勿觸 OOM 的地雷