无法设置HikariCP最大池大小

时间:2018-11-30 11:44:18

标签: spring-boot hikaricp

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

我尝试使用

applicaiton.properties中进行更改
  

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

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

我要更改的原因是因为我在登台过程中以某种方式达到了极限,我不知道是什么原因造成的。

2 个答案:

答案 0 :(得分:3)

我最近遇到了类似的问题(Spring Boot v2.1.3)。在这里发布,以防人们遇到同样的情况。

长话短说:如果您使用 DataSource 初始化 @ConfigurationProperties,那么这些属性似乎不需要 {{1} 的 hikari 前缀},除非我遗漏了什么。因此,如果您使用 maximum-pool-sizespring.datasource.maximum-pool-size 应该可以工作。

详细信息:就我而言,我自己使用 @ConfigurationProperties(prefix = "spring.datasource") 初始化 DataSource,以便稍后可以在 org.springframework.boot.jdbc.DataSourceBuilder 中使用它:

org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean

在这种情况下,取自 Common App Properties section in Spring Boot doc 的属性 @Bean @Primary @ConfigurationProperties(prefix = "spring.datasource") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); } 没有帮助。 suggested above spring.datasource.hikari.maximum-pool-size 也没有。

所以我去调试了 Spring Boot 代码,它引导我找到了 maximumPoolSize 和它的方法 org.springframework.boot.context.properties.bind.JavaBeanBinderbind setter HikariDataSource 的属性名称的值是“maximum-pool-size”,所以为了测试,我将我的属性重命名为 setMaximumPoolSize,它终于起作用了。

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

答案 1 :(得分:2)

根据HikariCP Github README,它是maximumPoolSize,因此请尝试使用:

spring.datasource.hikari.maximumPoolSize = 200

但这仅在允许Spring Boot创建DataSource的情况下有效。如果您自己创建DataSource,则Spring Boot属性无效。

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