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

当HikariCP调试日志的连接总数为2时,Spring Boot度量显示HikariCP连接创建计数1

邹德泽
2023-03-14

我使用SpringBoot2.0版。2使用默认连接池创建web应用程序。HikariCP调试日志显示收集连接大小为2,但Spring Boot度量显示连接创建为1。

我误解了吗?提前谢谢。

应用程序。yml如下所示

spring:
    datasource:
        minimum-idle: 2
        maximum-pool-size: 7

日志:

DEBUG 8936 --- [l-1 housekeeper] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - After cleanup  stats (total=2, active=0, idle=2, waiting=0)

指标的URL:http://localhost:8080/xxx/metrics/hikaricp.connections.creation

答复:

{
    name: "hikaricp.connections.creation",
    measurements: 
    [
        {
            statistic: "COUNT",
            value: 1  <--- I think this should be 2
        },
        ...
    ]
}

共有1个答案

邢弘业
2023-03-14

在此阶段,您看到的是HikariCPs在跟踪指标方面的failfast check行为。

(事实上,我对此进行了深入研究,因为我事先不知道答案)

在此阶段,尚未设置MetricsTracker,因此不计算初始连接创建。如果可以建立初始连接,HikariCP只保留此连接。在您的情况下,只计算下一次连接创建。

如果您确实希望度量值“正确”,可以设置spring。数据源。希卡里。初始化失败超时=-1。该行为在HikariCPs自述文件中的initializationFailTimeout下进行了描述。

如果你真的需要一个“正确”的值是有争议的,因为你只会错过最初的计数。理想情况下,您应该考虑特定时间窗口中的连接创建计数,例如每分钟的连接创建速率,以确定是否过早地从池中释放连接。

 类似资料:
  • 地狱, 我是否可以获取HKARIP连接池度量信息,如总连接数、空闲连接数等? 我知道Hikaripool记录这样的信息: 清理前池统计数据库(总计=20,使用次数=0,可用次数=20,等待次数=0) 但是它太频繁了,我的代码无法控制它。我想在可配置的时间内记录这些信息,例如1分钟。顺便说一句,我用Scala Slick 3.0

  • 我有这个使用HikariCP连接池的代码: 我通过发出命令“Show Processlist”来监控mysql中的连接,我看到在行之后创建了100个连接: 。。。正在运行。我肯定这不是命中注定的,对吧?它应该在稍后执行pooledDataSource时创建连接。getConnection()。 我做错了什么?为什么它会立即创建100个连接??

  • 我尝试使用HikariCP和mariaDB数据库,但是当我尝试初始化的时候,我得到了下一个错误。 由以下原因引起:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 我的MariaDBDatabase类: 我的数据库类: 我的家伙.xml

  • 我正在开发一个在Java服务器上运行的游戏。对于数据库池,我使用的是HikariCP,这是一个优秀的库,但它现在抛出了以下错误: 现在我知道连接泄漏意味着打开的连接在某个地方漂浮,但我不知道如何或在哪里漂浮。 下面是我的数据库类中的一个方法,根据堆栈跟踪,错误应该发生在这里。 这只是启动语句的一个基本方法。调用它时,我使用它,然后调用、和 但它告诉我连接是打开的。 我怎么解决这个?谢了!

  • 此刻我被困住的一点是调试处于“活动”状态的连接,以及它们正在做什么或它们当前被困的原因。 当我运行“10个同时用户”时,它基本上可以转换成2或3倍于此的查询,因此,当我打开HikariCP调试日志时,它会挂在类似的位置-上,而“active”连接并没有真正释放连接,这正是我试图找出的原因,因为查询相当简单,表本身只有4个字段(包括主键)。 HikariCP人员的最佳实践通常也是,增加连接池不是实现

  • 我有一个Spring Boot(v2.0.8)应用程序,它使用HikariCP(v2.7.9)池(连接到MariaDB)配置: 问题在于,我们的生产组件每隔几周就会反复抛出 。问题在于它永远不会从中恢复,并且会不断引发异常。因此,需要重新启动计算装置。 从HikariPool源代码来看,这似乎正在发生,因为每次它调用poolEntry都是空的,因此会抛出超时异常。要使其为空,连接池必须没有空闲条目