Как контролировать соединения c3p0 - PullRequest
12 голосов
/ 05 ноября 2010

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

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

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

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

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

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

Ответы [ 2 ]

21 голосов
/ 05 ноября 2010

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

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

Если в вашей среде доступны библиотеки JMX и JMX MBeanServer (они включены в JDK 1.5и выше), вы можете проверять и конфигурировать ваши источники данных c3p0 с помощью инструмента администрирования JMX (такого как jconsole, в комплекте с jdk 1.5).Вы обнаружите, что c3p0 регистрирует MBean-компоненты под com.mchange.v2.c3p0, один со статистикой о библиотеке в целом (называемый C3P0Registry), и MBean для каждого PooledDataSource, который вы развертываете.Вы можете просматривать и изменять свойства конфигурации вашего источника данных, отслеживать активность пулов соединений, операторов и потоков, а также сбрасывать пулы и источники данных с помощью PooledDataSource MBean.(Вы можете просмотреть документацию по API PooledDataSource для документирования доступных операций.)

Кстати, похоже, есть плагины JMX для Nagios, выВы не обязаны использовать JSP.

1 голос
/ 05 августа 2013

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

  1. Загрузите JMXQuery из кода Google.Вам нужно будет проверить ревизию 18 примерно так.

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

  2. Загрузите этот патч. шаблонное исправление для c3p0

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

    patch -p0 -i wildcard_patch.diff

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

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

  5. теперь перейдите в папку 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

...