weblogic數據庫連接池泄露(轉)


問題:在使用weblogic 連接池時,系統經常出現沒有斷開的連接,但因為系統龐大,又不能知道哪個地方程序沒有斷連接.請問有沒有好辦法能夠監測到沒有斷開連接的SQL,或其他監測辦法

解決方案:

1、查源代碼。像Oracle這樣的數據庫做歸檔日志的話貌似能知道執行的什么SQL,通過綜合觀察,分析。

2、Oracle能根據進程查到SQL,怎么能在weblogic中查到沒斷連接的事物所執行的sql呢

  WebLogic能知道活動的連接數,Oracle的企業管理器能看到會話關聯的SQL

3、使用kill -3 pid 

或者通過console 的dump看看進程信息

這個情況下哪些進程在做什么東西,應該可以追蹤到具體方法,然后定位相關SQL操作即可

4、把weblogic的jdbc日志打開,在控制台把檢測連接池泄露的選項打開,之后可以查看weblogic console日志和jdbc日志,能找到泄漏點。
另一個方法是在oracle上,好像也能查到,具體方法不記得了。

5、查看weblogic后台日志,一般連接池泄露會有如下提示:A JDBC pool connection leak was detected. A connection leak occurs when a connection obtained from the pool was not closed explicitly by calling close() and then was disposed by the garbage collector and returned to the connection pool.找到日志后可以使用關鍵字來匹配,如用leak匹配,這樣就可以找到未關鏈接的程序。也可以寫個腳本,放在weblogic服務器上,定期掃描一下日志,如果發現泄露就拋出相關錯誤信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM