我正在使用Spring Boot 2.0.3版本。我想增加HikariCP的最大池大小,默认为10。
我尝试使用
在applicaiton.properties
中进行更改
spring.datasource.hikari.maximum-pool-size = 200
但是它不起作用,因为在日志中它仍然显示最大池大小为10。
我要更改的原因是因为我在登台过程中以某种方式达到了极限,我不知道是什么原因造成的。
答案 0 :(得分:3)
我最近遇到了类似的问题(Spring Boot v2.1.3)。在这里发布,以防人们遇到同样的情况。
长话短说:如果您使用 DataSource
初始化 @ConfigurationProperties
,那么这些属性似乎不需要 {{1} 的 hikari
前缀},除非我遗漏了什么。因此,如果您使用 maximum-pool-size
,spring.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.JavaBeanBinder
。 bind
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。