Skip to content

MBean (JMX) Monitoring and Management

Brett Wooldridge edited this page Aug 17, 2015 · 8 revisions

The JMX MBean for HikariCP exposes:

  • Idle Connection count
  • Active Connections (in use)
  • Total Connections
  • The number of threads waiting for a connection

Note these values are extremely ephemeral and reflect a snapshot in time when measured. As each statistic is time-sensitive and collected independently, it is possible for values to not "add up" over short periods of time. Do not base any programmatic decisions based on these values, they are for monitoring purposed only.

Additionally, the following actions are invocable against the MBean:

  • softEvictConnections()
  • suspendPool()1
  • resumePool()1

1 This methods are only available if the pool has been configured with allowPoolSuspension=true.

These values are visible in a JMX management console such as jconsole.

Programmatic access

The MBean is registered with the name:

com.zaxxer.hikari:type=Pool (poolName)

where poolName is a name you can set on the HikariConfig using setPoolName("foo"), for example.

Programatic access goes something like this:

MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (foo)");
HikariPoolMXBean poolProxy = JMX.newMXBeanProxy(mBeanServer, poolName, HikariPoolMXBean.class);
int idleConnections = poolProxy.getIdleConnections();

The accessible attributes are IdleConnections, ActiveConnections, TotalConnections, ThreadsAwaitingConnection. Similarly, the softEvictConnections() and suspendPool()/resumePool() methods can be invoked using the MBean proxy.

The following properties are also configurable in real-time on the HikariConfig MBean as the pool is running via a JMX management console or programmatically as above:

  • connectionTimeout
  • idleTimeout
  • maxLifetime
  • minimumIdle
  • maximumPoolSize