小编Fra*_*rić的帖子

Grails连接池 - 连接未关闭?

我有一个grails/groovy web-app与数据库连接池.设置如下:

dataSource:
        url: "jdbc:postgresql://192.168.100.53:5432/bhub_dev"
        properties:
          jmxEnabled: true
          initialSize: 5
          maxActive: 25
          minIdle: 5
          maxIdle: 15
          maxWait: 10000
          maxAge: 600000
          timeBetweenEvictionRunsMillis: 5000
          minEvictableIdleTimeMillis: 60000
          validationQuery: SELECT 1
          validationQueryTimeout: 3
          validationInterval: 15000
          testOnBorrow: true
          testWhileIdle: true
          testOnReturn: false
          jdbcInterceptors: ConnectionState
          defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED
Run Code Online (Sandbox Code Playgroud)

我正在使用java-melody进行诊断和监控,并注意到一些奇怪的行为.例如,在执行查询DB的作业时,连接可以克服maxActive属性.为什么这甚至可能?

在此输入图像描述

我是否需要明确关闭Grails连接?该作业调用一个服务方法,通过withCriteria Grails调用简单地执行数据库查询,如:

def activities = WorkActivity.withCriteria{
     eq("workCategoryActive", true)
     order("id", "desc");
}
Run Code Online (Sandbox Code Playgroud)

并且似乎每次运行时,都会打开2个新连接,并且它们不会每次都正常关闭.

此外,在每个页面刷新时,都有一些调用后端来执行查询,有时即使刷新2个新连接似乎也会打开.

在此输入图像描述

我是Grails dev的新手,所以我不知道我是否必须/甚至可以通过Criteria数据库连接来关闭它.

任何一点帮助表示赞赏.数据库是PGSQL.

编辑:好的,所以现在我正在看java-melody中的线程诊断,看起来Tomcat池清理器处于等待状态,这就是为什么连接数没有下降?此外,似乎每次运行该作业时,2个线程都会启动,而其中一个线程会等待等待?这到底是怎么回事.

在此输入图像描述

database grails groovy connection-pooling java-melody

5
推荐指数
1
解决办法
552
查看次数