Как отслеживать соединения c3p0

Я использую Hibernate в моей войне JBoss, используя c3p0 для пула соединений, оба настроены в спящем режиме.контекстно-свободная грамматика.файл конфигурации xml в моем classpath

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

Я видел сервер.журнал генерирует строки с интересной информацией о пуле соединений:

отладка [com.mchange.П2.resourcepool.BasicResourcePool] трассировка com.mchange.П2.resourcepool.BasicResourcePool@63f5e4b6 [управляемый: 10, неиспользуемый: 9, исключенный: 0]

для моего пула мониторинга (я использую nagios) я хотел бы предоставить JSP, рассказывающий, сколько соединений используется и сколько бесплатно, как говорится в файле журнала.

Как я могу спросить c3p0, сколько управляемых и неиспользуемых соединений есть?

2 ответов


вы можете контролировать свой пул соединений(ы) с помощью JMX. Из документации:

настройка и управление c3p0 через JMX

если библиотеки JMX и JMX Доступ доступны в вашем Среда (они включены в JDK 1.5 и выше), вы можете проверить и настроить источники данных c3p0 через a Инструмент администрирования JMX (например jconsole, в комплекте с jdk 1.5). Вы обнаружит, что c3p0 регистрирует MBeans под com.mchange.v2.c3p0, с статистика по библиотеке как целое (называется C3P0Registry), и MBean для каждого PooledDataSource вы развертывать. Вы можете просматривать и изменять Свойства конфигурации DataSource, отслеживать активность соединения, Оператор, пулы потоков и сброс пулы и источники данных через PooledDataSource на MBean. (Вы можете хотите посмотреть на API Docs на PooledDataSource для документация доступна оперативный.)

кстати, есть кажется, Плагины JMX для Nagios, вы не вынуждены использовать JSP.


вы можете контролировать с Icinga / Nagios, как это.

  1. скачать JMXQuery из кода google. Вам нужно будет проверить ревизию 18, Как так.

    svn checkout -r 18 http://jmxquery.googlecode.com/svn/trunk/ jmxquery-read-only

  2. скачать этот патч. подстановочный патч для c3p0

  3. используйте эту команду для исправления исходного кода: (убедитесь, что вы находитесь в каталоге jmxquery-read-only/src/main)

    patch -p0 -i wildcard_patch.diff

  4. скачать Apache Maven и извлечь его с помощью этой команды

    tar -zxvf apache-maven-*-bin.tar.gz

  5. теперь cd в папку jmxquery-только для чтения и выполните следующую команду (предполагая, что apache maven и jmxquery находятся в одной папке)

    ../apache-maven-*/bin/mvn compile

  6. затем выполните следующую команду:

    ../apache-maven-3.0.3/bin/mvn package

  7. теперь вы должны были произвести в jmxquery.файл jar, который вы можете использовать для запроса пула соединений c3p0 следующим образом: (файл check_jmx можно получить, просто загрузив код jmxquery с сайта кода google, как обычно. используя этой ссылке)

    check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:1090/jmxrmi -O com.mchange.v2.c3p0:type=PooledDataSource* -N 1 -A numBusyConnections -w 50 -c 100