无法设置 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 README 是 maximumPoolSize
所以尝试使用:
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
终于成功了。
希望对您有所帮助。如果我遗漏了什么或走错了路,请在评论中告诉我。谢谢!
我正在使用 Spring Boot 2.0.3 版本。我想增加 HikariCP 的最大池大小,默认情况下为 10。
我尝试在 applicaiton.properties
中将其更改为
spring.datasource.hikari.maximum-pool-size=200
但它不起作用,因为在日志中它仍然显示最大池大小为 10。
我想改变的原因是因为我不知何故达到了分期的限制,我不知道是什么原因造成的。
根据 HikariCP Github README 是 maximumPoolSize
所以尝试使用:
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
终于成功了。
希望对您有所帮助。如果我遗漏了什么或走错了路,请在评论中告诉我。谢谢!