当前位置: 首页 > 知识库问答 >
问题:

无法设置HikariCP最大池大小

翟黎明
2023-03-14

我使用的是SpringBoot2.0。3释放。我想增加HikariCP的最大池大小,默认情况下为10。

我试着在应用程序中更改它。属性带有

spring.datasource.hikari.maximum-池-大小=200

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

我想改变的原因是,我不知怎么地达到了登台的极限,我不知道是什么原因造成的。

共有2个答案

汪高岑
2023-03-14

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

长话短说:如果您使用@ConfigurationProperties初始化数据源,那么这些属性似乎不需要最大池大小的前缀,除非我遗漏了什么。所以spring。数据源。如果使用@ConfigurationProperties(prefix=“spring.datasource”),则最大池大小应该可以使用。

细节:在我的例子中,我自己使用org初始化数据源。springframework。靴子jdbc。DataSourceBuilder,以便我以后可以在组织中使用它。springframework。奥姆。jpa。LocalContainerEntityManagerFactoryBean

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

在这种情况下,属性spring.datasource.hikari.maximum-pool-size取自Spring Boot文档中的通用应用程序属性部分。上面也没有建议。

所以我去调试了Spring Boot代码,这让我找到了org。springframework。靴子上下文财产。绑定JavaBeanBinder及其方法bindHikariDataSourcesettersetMaximumPoolSize的属性名的值是“最大池大小”,所以为了测试,我将属性重命名为spring。数据源。最大池大小,它终于起作用了。

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

王声
2023-03-14

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

spring.datasource.hikari.maximumPoolSize = 200

但只有当您允许Spring Boot创建数据源时,这才有效。如果您自己创建数据源,Spring Boot属性将无效。

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

 类似资料:
  • 当容器加载时,spring boot HikariCP提供的默认连接池大小是多少? 当然,我使用下面的属性来设置最大cp大小,但是我想知道如果我们在application.properties文件中没有给出任何数字,默认的cp大小是多少。 如果我给出application.properties最大池大小为100,而我只使用20,这会影响我的应用程序性能吗?

  • 是否可以将最大池大小设置为软限制? 我的意思是,我希望HikariCP最多使用5个连接。但是,当需要第6个连接时,我希望HikariCP创建第6个连接,该连接在我将其返回池后将被销毁。此外,如果HikariCP通知我,由于池中的所有连接都已在使用中,因此创建了一个额外的连接,那就太好了。

  • 问题内容: 因此,我正在尝试优化节点应用程序,并且我的应用程序发出HTTP和HTTPS请求。 从LinkedIn的这篇文章中可以使节点变得更快,它建议禁用套接字池以消除5个套接字的限制: 现在来自GitHub上的Mikeal(Request的开发者),他建议: 公平地说,他不建议无限,但您可以在其中加上任何合理的值。 现在,我的应用程序使用http和https,因此我使用了以下代码: 当我这样做时

  • 在OkHttp中,我找不到设置硬最大连接池大小的方法。从留档https://square.github.io/okhttp/3.x/okhttp/okhttp3/ConnectionPool.html很明显,您可以设置最大空闲连接,但不能设置整体最大值。这意味着在高负载下,它可以增长超过任何限制。 有没有办法最大化池?如果没有,为什么没有?

  • 当我们用来谈论核心池大小和最大池大小之间的区别到底是什么? 可以借助示例来解释吗?

  • 我正在尝试为KendoDropDownList设置下拉窗口的宽度。使用以下代码: 下拉列表显示并且是KendoDropDownList。所以我知道调用var ddl=$(“#dropdownlist”)。kendoDropDownList()正在工作。但是,我在调用kendoDDL时遇到一个异常。列表宽度(400)。 0x800a138f-JavaScript运行时错误:无法获取未定义或空引用的属