0

我有一个在 Tomcat 7 上运行的 Java Web 应用程序,它使用 JDBC 连接到 Oracle 11g 数据库。该应用程序包含一个 JSP,它使用 JQuery 向将数据插入数据库的 servlet 发出 Ajax 请求(使用 .post 函数)。当系统处于轻负载状态时,我开始在数据库中看到空闲连接。我通过在 SQL Developer 中检查 v$session 来观察它们。当我们运行性能测试时,它在大约 2 分钟内将数据库服务器用 150 个连接最大化。我已经检查过我的代码很多次了,我总是在 finally 块中关闭所有的 ResultSets、Statements 和 Connections。当 JSP 同时提交多个 Ajax 请求时会出现问题,这让我认为这可能是一个多线程问题,但是我再次检查了我的代码,并且没有跨线程共享数据。从数据源获取连接并关闭连接的代码位于所有 DAO 类都继承自的抽象基类中。有谁知道可能导致这种情况的原因?由于涉及到很多类,我不确定要发布什么源代码;如果你想看的话,请告诉我。谢谢你的帮助。

4

1 回答 1

0

尝试将 maxWait 设置为 10000 并注意超时。这表明您的 Web 应用程序的某些组件没有关闭数据库连接。

此外,尝试将 maxActive 限制为 15,看看这会如何影响您的应用程序和 Oracle 中同时打开的连接数。

于 2012-06-26T12:33:15.063 回答