【问题标题】:Hikari Connection pool not increasingHikari 连接池没有增加
【发布时间】:2021-11-08 11:50:58
【问题描述】:

我已经提供了所需的 Spring Boot 属性,并启用了 hikari 调试。但是,当我启动应用程序时,连接池本身是默认的。以下是我正在使用的属性列表:

spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.maximumPoolSize=30
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.minimumIdle=15
logging.level.com.zaxxer.hikari.HikariConfig=DEBUG
logging.level.com.zaxxer.hikari=TRACE

对于数据源:

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:file:D:/ATOP_BACKEND/database/db;AUTO_SERVER=TRUE
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

我尝试了各种属性,例如“spring.datasource.hikari.maximum-Pool-Size=30”,还尝试从属性中删除 hikari(spring.datasource.maximum-Pool-Size)在某些情况下工作过。他们都没有增加连接池。任何 cmets/链接都会有所帮助。 启动应用程序后,调试消息显示:

{"@timestamp":"2021-09-13T12:46:51.356+05:30","@version":"1","message":"HikariPool-1 - Pool stats (total=10, active=0, idle=10, waiting=0)","logger_name":"com.zaxxer.hikari.pool.HikariPool","thread_name":"HikariPool-1 housekeeper","level":"DEBUG","level_value":10000,"application_name":"atopweb"}

【问题讨论】:

  • 池大小没有增加是什么意思?
  • 池大小为默认值,即 10。它不会增加到我给出的值 30。

标签: java spring spring-boot hikaricp


【解决方案1】:

我认为您需要参考 Hikari 的文档才能真正了解发生了什么。

将maxPoolSize 的值设置为30 并不意味着应用程序将立即开始使用30 个连接。正如文档所述,此属性配置以下行为:

此属性控制池允许的最大大小 范围,包括空闲和使用中的连接。基本上这个 值将确定实际连接的最大数量 数据库后端。一个合理的值最好由 你的执行环境。当池达到这个大小时,没有 空闲连接可用,调用 getConnection() 将阻塞 在超时前最多连接超时毫秒

简而言之,如果需要,应用程序的连接池大小将允许达到 30 个连接,但这并不意味着应用程序将立即开始使用 30 个连接。

除上述内容外,我建议您查看 this 文档,该文档解释了连接池背后的逻辑,以及在配置连接池之前需要牢记的各种注意事项。

【讨论】:

  • 感谢您的回答。我确实看过那些。我还编辑了我在调试中看到的输出的问题。也许这会让你更清楚。
  • 上面的答案再次涵盖了您的要求。大小为 10,如果需要,将逐渐增加到 30。
  • 最大值(即上限)为 30。
  • 属性没有被覆盖。我指定 maximumConnectionPool 和 minimumIdle 应该是 30。它们都显示为 10,这是默认值。请检查我在上述问题中给出的输出。
猜你喜欢
  • 2021-10-05
  • 2022-07-24
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2018-10-05
  • 1970-01-01
相关资源
最近更新 更多