【问题标题】:Jboss 7 not releasing connectionJboss 7没有释放连接
【发布时间】:2015-11-25 07:03:17
【问题描述】:

我的 grails 应用程序在 Jboss 6.0 上运行。 在加载时,我们注意到一些连接挂起并留在数据库中的活动会话中。 连接管理完全由 grails 负责,我们不会打开/关闭任何连接。确保如果丢失任何连接,则从代码中关闭。 我们在数据源中添加了 track-statement ,但我们在日志文件中没有看到任何问题。 我们也尝试了查询超时。它没有工作,因为 DB 会话处于活动状态

使用大小为 300 的 jboss 连接池

Grails 2.3.5 版 休眠版本:休眠:3.6.10.7 应用服务器:jboss 6 数据库:Oracle 10g

所以我的问题是 1)如何知道它为什么持有? 2)有没有办法为连接配置连接超时。

【问题讨论】:

  • 你能发布你的 Jboss 数据源配置信息吗?

标签: hibernate grails jboss database-connection grails-orm


【解决方案1】:

根据您正在运行的配置,您可能获得了一个开箱即用的 JDBC 连接池。池的工作是保持一定数量的连接打开并准备好使用。建立一个新的连接稍微昂贵(身份验证、加密握手等),所以如果不是所有连接都关闭,你可能不应该惊慌。但是,如果打开的数量很大或数量不断增加,您应该警惕。我认为 50 是典型的默认值。

一般来说,等待更多信息 - 是的,您可以配置很多关于连接池数据源的信息。包括一次打开多少个连接,maxIdle(在空闲时应该保持多少个连接)maxConnections,池管理器应该审核连接并清理它们的时间范围,或者如果它们超过maxIdle则关闭任何空闲连接等...

通常,当应用程序完成特定连接时(通常是在单个 HTTP 请求结束时),它会将连接返回到池中,并且池会对其进行一些清理、重置,但保持打开状态为下一个请求做好准备。

查看JDBC 2.0 Connection Pool Documentation

并查看Oracle JDBC Developer's Guide 10g

【讨论】:

    【解决方案2】:

    参考最新文件。此外,请使用作为 Java 连接池的通用连接池 (UCP)。

    Oracle JDBC Developers guide 12c

    UCP Developer's guide

    UCP with JBOSS blog

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 2014-02-07
      • 2012-02-06
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多