如何找出连接泄漏?

时间:2009-03-19 23:55:09

标签: connection-pooling

我们有一个部署在sun应用服务器上的struts Web应用程序,尽管在开发环境中进行了负载测试/系统集成测试。没有连接泄漏的情况。

但是在生产环境中。由于使用中的连接不断增加,导致连接泄漏。

除应用程序代码外,还有哪些其他情况会导致连接泄漏?

2 个答案:

答案 0 :(得分:0)

你如何衡量这一点?您是否在查看数据库中的连接数?应用服务器中池的大小?您使用的是哪个数据库?

我不明白“没有连接[sic]泄漏的情况。”如果未正确关闭所有ResultSet,Statements和Connections(在方法范围的finally块中的各个try / catch块中,以实例化的相反顺序),您可能会遇到泄漏。

除非有另一个使用相同数据库的应用程序,否则它必须是您的代码或应用服务器。如果您对代码深表否认,请尝试切换应用服务器并查看是否有帮助。

我建议你的测试场景不现实。如果您在生产中未观察到此行为,则测试不会触发行为,或者测试和prod部署不相同。

答案 1 :(得分:0)

连接泄漏是遇到的最常见问题之一。 其主要原因是没有关闭结果集,使用后连接。

try{
//perform jdbc operations
}catch(Exception e){
//perform error operations
}finally{
//close the connections 
}

此外,还有一些方法可以启用连接泄漏的日志记录,但这会影响性能。