我的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)有没有办法为连接配置连接超时。
答案 0 :(得分:0)
根据您运行的配置,您可能已经开箱即用了JDBC连接池。池的工作是保持一定数量的连接打开并准备使用。建立新连接稍微昂贵(身份验证,加密握手等等),因此如果不是所有连接关闭,您可能不会感到惊慌。但是,如果打开了大量或不断增加的数字,您应该感到震惊。我认为50是典型的默认值。
通常,等待更多信息 - 是的,您可以配置很多关于连接池数据源的信息。包括一次打开多少个连接,maxIdle(空闲时应保持打开的连接数)maxConnections,池管理器应审核连接并清理它们的时间范围,如果超过maxIdle,则关闭任何空闲连接,等等...
通常,当应用程序完成特定连接时,通常在单个HTTP请求结束时,它会返回到池的连接,并且池会对其执行一些清理,重置它,但保持打开状态,准备好接下来的请求。
答案 1 :(得分:0)
请参阅最新文件。此外,使用通用连接池(UCP),它是一个Java连接池。