【问题标题】:Heroku Postgres: This connection has been closedHeroku Postgres:此连接已关闭
【发布时间】:2015-10-31 02:33:03
【问题描述】:

我开发了一个小型 Heroku + Grails + Postreg 应用程序。它会在部署后 20 分钟内正常工作,之后我总是得到:

 This connection has been closed.. Stacktrace follows: Heroku/myapp
- org.postgresql.util.PSQLException: This connection has been closed. Heroku/myapp
- at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:837) Heroku/myapp
- at org.postgresql.jdbc2.AbstractJdbc2Connection.getAutoCommit(AbstractJdbc2Connection.java:798) Heroku/myapp
- at org.grails.datastore.gorm.GormStaticApi$_methodMissing_closure2.doCall(GormStaticApi.groovy:102) Heroku/myapp
- at com.myapp.WorkspaceController.list(WorkspaceController.groovy:18) Heroku/myapp
- at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198) Heroku/myapp
- at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) Heroku/myapp
- at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53) Heroku/myapp
- at grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:53) Heroku/myapp
- at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62) Heroku/myapp
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) Heroku/myapp
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) Heroku/myapp
- at java.lang.Thread.run(Thread.java:745) Heroku/myapp
- 2015-08-07 15:11:10,685 [http-nio-20850-exec-5] ERROR spi.SqlExceptionHelper - This connection has been closed. Heroku/myapp
- 2015-08-07 15:11:10,689 [http-nio-20850-exec-5] ERROR spi.SqlExceptionHelper - This connection has been closed. Heroku/myapp
- 2015-08-07 15:11:10,696 [http-nio-20850-exec-5] ERROR errors.GrailsExceptionResolver - PSQLException occurred when processing request: [GET] /api/users/21/workspaces Heroku/myapp
- This connection has been closed.. Stacktrace follows: Heroku/myapp

【问题讨论】:

  • 您可以将数据源设置粘贴到 grails 中吗?

标签: postgresql grails heroku grails-orm


【解决方案1】:

我自己通过将它添加到 DataSource.groovy 解决了这个问题:

dataSource {
    pooled = true
    properties {
       maxActive = -1
       minEvictableIdleTimeMillis=1800000
       timeBetweenEvictionRunsMillis=1800000
       numTestsPerEvictionRun=3
       testOnBorrow=true
       testWhileIdle=true
       testOnReturn=true
       validationQuery="SELECT 1"
    }
}

【讨论】:

  • 知道这些属性中的哪一个真正起到了作用吗?
  • 我在 Spring Boot 应用程序中遇到了同样的问题(使用 Tomcat JDBC 中的 DataSource),看起来我使用 setTestOnBorrow(true); setTestWhileIdle(true); setTestOnReturn(true); setValidationQuery("SELECT 1"); (javadocs) 解决了这个问题。谢谢!
【解决方案2】:

结合@Macchiatow 的回答和@Jonik 的评论,这是我以前工作的,属性较少:

dataSource {
    pooled = true
    properties {
        testOnBorrow = true
        testWhileIdle = true
        testOnReturn = true
        validationQuery = "SELECT 1"
    }
    driverClassName = "org.postgresql.Driver"
    dialect = "..."
}

【讨论】:

    猜你喜欢
    • 2015-04-25
    • 2017-11-06
    • 2012-03-31
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多