无法设置 HikariCP 最大池大小

Unable to set HikariCP max-pool-size

我正在使用 Spring Boot 2.0.3 版本。我想增加 HikariCP 的最大池大小,默认情况下为 10。

我尝试在 applicaiton.properties 中将其更改为

spring.datasource.hikari.maximum-pool-size=200

但它不起作用,因为在日志中它仍然显示最大池大小为 10。

我想改变的原因是因为我不知何故达到了分期的限制,我不知道是什么原因造成的。

根据 HikariCP Github READMEmaximumPoolSize 所以尝试使用:

spring.datasource.hikari.maximumPoolSize = 200

但这只有在您允许 Spring 引导创建 DataSource 时才有效。如果您自己创建 DataSource Spring 引导属性无效。

请注意,200 是一个非常高的值,可能会对您的数据库产生负面影响,因为每个物理连接都需要服务器资源。在大多数情况下,较低的值会产生更好的性能,请参阅 HikariCP wiki: About Pool Sizing

我最近遇到了类似的问题 (Spring Boot v2.1.3)。将它张贴在这里以防人们遇到相同的情况。

长话短说:如果您使用 @ConfigurationProperties 初始化 DataSource,这些属性似乎不需要 hikari 前缀对于 maximum-pool-size,除非我遗漏了什么。因此,如果您使用 @ConfigurationProperties(prefix = "spring.datasource").

spring.datasource.maximum-pool-size 应该可以工作

详细信息:在我的例子中,我使用 org.springframework.boot.jdbc.DataSourceBuilder 自己初始化 DataSource,以便稍后可以在 org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean:

@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource primaryDataSource()
{
    return DataSourceBuilder.create().build();
}

在这种情况下 属性 spring.datasource.hikari.maximum-pool-size 取自 Common App Properties section in Spring Boot doc did not help. Neither did maximumPoolSize.

所以我调试了 Spring 引导代码,引导我进入 org.springframework.boot.context.properties.bind.JavaBeanBinder 和它的方法 bind。 属性 name for HikariDataSource setter setMaximumPoolSize 的值为“maximum-pool-size”,所以为了测试,我将我的 属性 重命名为 spring.datasource.maximum-pool-size 终于成功了。

希望对您有所帮助。如果我遗漏了什么或走错了路,请在评论中告诉我。谢谢!