如何在Play中设置HikariCP连接池大小

5

如何正确配置 HikariCP 在 Play 框架下使用 Slick 和不使用 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

我已经看过文档,但似乎什么都没懂。

3个回答

4

我认为正确的语法是

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

但是这个似乎无法与Slick一起使用

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

你可以尝试类似于以下内容:

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

是的,那对于slick有效。我仍在尝试找出非slick版本。 - codefinger
由于某种原因,将该值设置为15会打开17个到数据库的连接。我不知道额外的2个连接是用来做什么的,但我认为对于遇到这个问题的人来说,这是一个好消息。我将其设置为19,我的数据库上打开了所有20个连接。 - decapo

3

别误解,实际上在 slick 3.x 中,池大小由配置中的 numThreads 值决定,最小值为 numThreads,最大值为 numThreads * 5,在 HikariCP 包装器中,池大小的配置值根本没有被使用。


1
SBT依赖项HikariCP连接池。
// https://mvnrepository.com/artifact/com.zaxxer/HikariCP
libraryDependencies += "com.zaxxer" % "HikariCP" % "2.3.2"

使用HikariDatasource和引入相关内容,并使用hikari配置的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

并使用数据源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接