-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Dropwizard HealthChecks
HikariCP 2.3.2+ supports Dropwizard HealthChecks.
You can enable health checks by configuring a HealthCheckRegistry
instance in HikariConfig
or HikariDataSource
(depending on which you use for configuration). There is a method, setHealthCheckRegistry(HealthCheckRegistry)
, for this purpose.
HikariCP also supports additional health check specific configuration through the addHealthCheckProperty(key, value)
and/or setHealthCheckProperties(Properties)
methods. The properties specific to each health check is documented below.
This health check will obtain a Connection
from the pool and immediately return it. The standard HikariCP internal "aliveness" check will be run.
By default this health check will use the standard pool connectionTimeout
when obtaining a Connection
. However, if the connectionTimeout
is disabled (set to 0
) then a timeout of 10 seconds will be used.
A specific timeout can also be set through a health check property called connectivityCheckTimeoutMs
:
config.addHealthCheckProperty("connectivityCheckTimeoutMs", "1000");
If an "alive" Connection
can be obtained, a HealthCheck.Result
that is healthy will be returned. If the connection fails or times out the SQLException of the failure is available through the Result.getError()
method.
This health check checks that, on average, 99% of all calls to getConnection()
obtain a Connection
within a specified number of milliseconds. The 99th percentile calculation is provided Dropwizard Metrics and is heavily biased to the past 5 minutes of measurement.
This health check is only available if a Dropwizard MetricRegistry
has been configured. Additionally, a expected99thPercentileMs
health check property must be specified to enable this health check. For example:
config.addHealthCheckProperty("expected99thPercentileMs", "10");
In this example, the health check will return a HealthCheck.Result
that is healthy if the 99th percentile of getConnection()
calls complete within 10ms. If the 99th percentile of getConnnection()
completion times exceeds 10ms, an unhealthy result is returned and a message similar to the one below is available through the Result.getMessage()
method.
99th percentile connection wait time of 54ms exceeds the threshold 10ms