Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to monitor c3p0 connections

I am using Hibernate in my JBoss war, using c3p0 for connection pooling, both configured within a hibernate.cfg.xml config file in my classpath

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

I've seen server.log generates lines with interesting information about the connection pool:

DEBUG [com.mchange.v2.resourcepool.BasicResourcePool] trace com.mchange.v2.resourcepool.BasicResourcePool@63f5e4b6 [managed: 10, unused: 9, excluded: 0]

For my monitoring pool (I am using nagios) I'd like to provide a JSP telling how many connections are being used and how many are free, as the log file says.

How can I ask c3p0 how many managed and unused connections are there?

like image 573
Llistes Sugra Avatar asked Nov 05 '10 07:11

Llistes Sugra


1 Answers

You can monitor your connection pool(s) via JMX. From the documentation:

Configuring and Managing c3p0 via JMX

If JMX libraries and a JMX MBeanServer are available in your environment (they are include in JDK 1.5 and above), you can inspect and configure your c3p0 datasources via a JMX administration tool (such as jconsole, bundled with jdk 1.5). You will find that c3p0 registers MBeans under com.mchange.v2.c3p0, one with statistics about the library as a whole (called C3P0Registry), and an MBean for each PooledDataSource you deploy. You can view and modify your DataSource's configuration properties, track the activity of Connection, Statement, and Thread pools, and reset pools and DataSources via the PooledDataSource MBean. (You may wish to view the API docs of PooledDataSource for documentation of the available operations.)

By the way, there seem to be JMX plugins for Nagios, you're not forced to use a JSP.

like image 69
Pascal Thivent Avatar answered Oct 16 '22 06:10

Pascal Thivent