【问题标题】:How to set HikariCP pool size with Play如何使用 Play 设置 HikariCP 池大小
【发布时间】:2016-03-21 15:17:17
【问题描述】:

配置 HikariCP for Play w/ 和 w/o Slick 的池大小的正确方法是什么?

我用 slick 试过这个:

slick.dbs.default.db.minimumIdle=30
slick.dbs.default.db.maximumPoolSize=30

(connectionTestQuery 等其他属性似乎也以这种方式工作)

没有 Slick 我尝试了以下各种组合:

play.db.default.minimumIdle=30
play.db.default.maximumPoolSize=30

还有:

play.db.default.prototype.hikaricp.minimumIdle=30
play.db.default.prototype.hikaricp.maximumPoolSize=30

我见过documentation,但似乎没有任何问题。

【问题讨论】:

    标签: playframework slick hikaricp


    【解决方案1】:

    我认为正确的语法是

    play.db.default.hikaricp.minimumIdle=30
    play.db.default.hikaricp.maximumPoolSize=30
    

    但是这个does not seem to work with Slick

    此外,请注意,Play Slick 不会考虑 play.db 下的任何配置。

    你可以试试

    slick.dbs.default.db.numThreads=30
    slick.dbs.default.db.queueSize=30
    

    【讨论】:

    • 是的,这适用于 slick。我仍在尝试找出非光滑版本。
    • 出于某种原因将此值设置为 15 会打开到数据库的 17 个连接。我不知道额外的 2 是做什么用的,但认为这对于遇到此线程的人来说会很高兴。我将其设置为 19 和所有 20 个在我的数据库上打开的连接。
    【解决方案2】:

    不要误会,其实在slick 3.x中,pool的大小是由配置中的numThreads值决定的,min size是numThreads,max size是numThreads * 5,pool的配置值size simple 不在其 HikariCP 包装器中使用。

    【讨论】:

      【解决方案3】:

      SBT 依赖 HikariCP 连接池

      // https://mvnrepository.com/artifact/com.zaxxer/HikariCP
      libraryDependencies += "com.zaxxer" % "HikariCP" % "2.3.2"
      

      将 HikariDatasource 与 imports 一起使用,并使用 hikari config 的 setMaximumPoolSize() 方法,如下所示

      import com.zaxxer.hikari.HikariDataSource
      import com.zaxxer.hikari.HikariConfig
      
      var datasource: HikariDataSource = null
      
      
       var hc: HikariConfig = new HikariConfig();
          hc.setMinimumIdle(--- anything ,depends)
          hc.setMaximumPoolSize(300 or anything)
      

      --设置其他需要的属性,如jdbc url、用户名、密码、数据库名等

      将 hikari 配置对象设置为 hikari 数据源

       var ds: HikariDataSource = new HikariDataSource(hc);
          datasource = ds
      

      并使用数据源。

      【讨论】: