Tomoyo Takayama
Tomoyo Takayama

Reputation: 13

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

I use Spring-boot version 2.0.2 to make web application with default connection pool HikariCP. HikariCP debug log shows collect connection size like 2, but spring boot metrics show connection creation is 1.

Did I misunderstand? Thanks in advance.

application.yml is the below

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

Log:

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

URL for metrics:http://localhost:8080/xxx/metrics/hikaricp.connections.creation

Response:

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

Upvotes: 1

Views: 12358

Answers (1)

mweirauch
mweirauch

Reputation: 2248

What you are seeing is HikariCPs failfast check behaviour with regards to tracking metrics at this stage.

(I actually dug into this as I didn't know the answer beforehand)

At this stage a MetricsTracker isn't set yet and thus the initial connection creation isn't counted. In case the initial connection could be established, HikariCP just keeps this connection. In your case only the next connection creation is counted.

In case you really want the metric value to be "correct" you can set spring.datasource.hikari.initialization-fail-timeout=-1. The behaviour is described in HikariCPs README under initializationFailTimeout.

If you really need a "correct" value is debatable as you'll only miss that initial count. Ideally you'll want to reason about connection creation counts in a specific time window - e.g. rate of connection creations per minute to determine if you dispose connections too early from the pool.

Upvotes: 3

Related Questions