Jboss 7没有释放连接

时间:2015-11-25 07:03:17

标签: hibernate grails jboss database-connection gorm

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

使用大小为300的jboss连接池

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

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

2 个答案:

答案 0 :(得分:0)

根据您运行的配置,您可能已经开箱即用了JDBC连接池。池的工作是保持一定数量的连接打开并准备使用。建立新连接稍微昂贵(身份验证,加密握手等等),因此如果不是所有连接关闭,您可能不会感到惊慌。但是,如果打开了大量或不断增加的数字,您应该感到震惊。我认为50是典型的默认值。

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

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

查看JDBC 2.0 Connection Pool Documentation

并查看Oracle JDBC Developer's Guide 10g

答案 1 :(得分:0)

请参阅最新文件。此外,使用通用连接池(UCP),它是一个Java连接池。

Oracle JDBC Developers guide 12c

UCP Developer's guide

UCP with JBOSS blog