leak,jdbc,weblogic;数据源连接池;泄漏

http://www.debugease.com/j2ee/705634.html

在使用weblogic 连接池时,系统经常出现没有断开的连接,但因为系统庞大,又不能知道哪个地方程序没有断连接.请问有没有好办法能够监测到没有断开连接的SQL,或其他监测办法.
 

解决方案 »

  1.  

    以前曾经碰到过,使用笨办法解决的,查源代码

    像Oracle这样的数据库做归档日志的话貌似能知道执行的什么SQL,通过综合观察,可能能帮到你
      

     

  2.  

    Oracle到是能根据进程查到SQL,但不是我需要的,怎么能在weblogic中查到没断连接的事物所执行的sql呢
      

     

  3.  

    WebLogic顶多能知道活动的连接数,Oracle的企业管理器能看到会话关联的SQL,不过也不容易抓取,问题比较棘手啊
      

     

  4.  

    使用kill -3 pid

    或者通过console 的dump看看进程信息

    这个情况下哪些进程在做什么东西

    应该可以追踪到具体方法,然后定位相关SQL操作即可
      

     

  5.  

    把weblogic的jdbc日志打开,在控制台把检测连接池泄露的选项打开,之后可以查看weblogic console日志和jdbc日志,能找到泄漏点。
    另一个方法是在oracle上,好像也能查到,具体方法不记得了。
      

     

  6.  

    查看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服务器上,定期扫描一下日志,如果发现泄露就抛出相关错误信息
posted @ 2013-09-27 14:11  陳聽溪  阅读(1810)  评论(0)    收藏  举报