客戶發現 WebLogic 9.2 連線池監控中,當前連接數低於初始連接數,直覺以為初始化失敗。經日誌分析發現,問題源於連線池曾被停用。本文深入剖析停用機制與自動恢復過程中導致連接數異常的原因。
手動暫停、資料庫關閉、網路不穩等均可觸發停用。客戶日誌顯示大量 java.net.SocketException: 管道已斷開 及 ResourceDisabledException,排除人為操作後,判定為網路波動導致連線中斷,進而觸發停用邏輯。
兩者均為「連續」失敗計數,成功操作即重置歸零。Flush 允許客戶端保留申請連線(嘗試重建),Disable 則直接拋出異常拒絕服務。
WebLogic 內建健康檢查,每 5 秒嘗試重建連線。復現步驟:

透過 internal-properties 調大失敗閾值,避免因網路抖動誤觸發停用:
<internal-properties>
<property>
<name>CountOfTestFailuresTillFlush</name>
<value>10</value>
</property>
<property>
<name>CountOfRefreshFailuresTillDisable</name>
<value>20</value>
</property>
</internal-properties>
根本解決仍需透過網路分析工具定位並修復網路不穩問題。