首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用grails获取连接池状态

问使用grails获取连接池状态
EN

Stack Overflow用户
提问于 2014-10-24 11:37:30
回答 1查看 4.9K关注 0票数 3

我有一个用grails构建的with服务,它连接到一个MySQL数据库。自从我升级到2.4.3之后,连接池没有释放连接就出现了问题,导致了异常:

代码语言:javascript
复制
org.apache.tomcat.jdbc.pool.PoolExhaustedException: [http-bio-8080-exec-216] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:50; busy:50; idle:0; lastwait:30000]

这是我的Datasources.groovy

代码语言:javascript
复制
dataSource {
    url = "jdbc:mysql://..."
    username = "xxx"
    password = "xxx"
    pooled = true
    properties {
        maxActive = 50
        maxAge = 10 * 60000
        timeBetweenEvictionRunsMillis = 5000
        minEvictableIdleTimeMillis = 60000
        numTestsPerEvictionRun=3
        testOnBorrow=true
        testWhileIdle=true
        testOnReturn=true
        validationQuery="SELECT 1"
    }
}
dataSource_survey {
    url = "jdbc:mysql://..."
    username = "xxx"
    password = "xxx"

    pooled = true
    properties {
        maxActive = 50
        maxAge = 10 * 60000
        timeBetweenEvictionRunsMillis = 5000
        minEvictableIdleTimeMillis = 60000
        numTestsPerEvictionRun=3
        testOnBorrow=true
        testWhileIdle=true
        testOnReturn=true
        validationQuery="SELECT 1"
    }
}

我读过grails,有些人似乎也有类似的问题。但我无法用那里提供的信息来解决这个问题。

访问连接池的状态将大大有助于调试。如何检查连接池的状态以查看运行时有多少连接处于空闲/繁忙状态?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-25 03:37:21

连接池被注册为一个javax.sql.DataSource,但是该接口只有用于获取一个Connection (一个带有用户名/密码,另一个没有)、访问日志编写器和获取/设置登录超时的方法。其他一切都由供应商来决定,供应商之间在最初配置池以及在整个应用程序运行过程中使用和监视它们的方法上几乎没有什么共同性。

因此,您确实需要找出用于池的哪个库,并使用它们的API。理想情况下,这将像访问dataSource bean一样简单(这很简单,只需依赖--将它像任何bean一样注入服务/控制器/等等-作为类范围字段,在本例中是def dataSource)并打印它的类名。但是我们将数据源封装在几个代理中,以添加一些重要的行为,因此访问起来不容易。

不过,您很幸运--对于这种情况,我们将原始的未代理实例单独处理,并将其注册为您也可以依赖的dataSourceUnproxied bean -inject(只是不要访问它的任何连接,只访问信息)。

在很长一段时间里,我们使用共用池来管理数据源,但是有一段时间我们改用了Tomcat池,因为基准测试显示它比他们所看的任何其他工具(包括C3P0)都要快,而且它的配置方法是基于共用池的,因此它基本上是一种下降式的替换,具有显着的性能提升和更多的可配置性。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26547139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档