我遇到的问题是,在我的项目的某个地方,有几个与mysql的连接没有被关闭,导致我的应用程序在几天后变得非常慢,基本上迫使我重新启动我的应用程序服务器。
为了找到这个问题的根源,我创建了一个映射,其中键是进行连接的类的类和方法名称,以及每次该方法进行/关闭时将增加和减少的值的值连接,我想这会让我看到与数据库建立连接的方法是打开了很多连接,结果证明是不准确的。
除了手动浏览代码以找到来源之外,您建议我如何找到未关闭连接的来源?
感谢。
答案 0 :(得分:0)
一种解决方案(不直接)会使用BTrace。您将创建拦截java.sql.connection
代码
https://kenai.com/projects/btrace
但要求是:
答案 1 :(得分:0)
您可以使用aspectj
以各种方法(DriverManager.getConnection
等)添加跟踪/记录/拦截器。)
但是我建议集中管理连接,并注意正确处理异常(即使这可以集中化)。
答案 2 :(得分:0)
使用可以捕获已放弃连接的连接池,例如Apache DNCP。