Spring 当 HikariCP 调试日志的连接总数为 2 时,启动指标显示 HikariCP 连接创建计数为 1

Spring boot metrics shows HikariCP connection creation count 1, when HikariCP debug log's connection total is 2

我使用 Spring-boot 版本 2.0.2 来制作带有默认连接池 HikariCP 的 Web 应用程序。 HikariCP 调试日志显示收集连接大小为 2,但 spring 引导指标显示连接创建为 1。

我是不是理解错了? 提前致谢。

application.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
        },
        ...
    ]
}

您看到的是关于现阶段跟踪指标的 HikariCPs failfast check behaviour

(因为我事先不知道答案,所以我实际上深入研究了这个问题)

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

如果您确实希望指标值为 "correct",您可以设置 spring.datasource.hikari.initialization-fail-timeout=-1initializationFailTimeout.

下的 HikariCPs README 中描述了该行为

如果您真的需要 "correct" 值是有争议的,因为您只会错过初始计数。理想情况下,您需要推断特定时间 window 内的连接创建计数 - 例如每分钟连接创建率,以确定您是否过早地从池中释放连接。