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

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

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

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

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

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

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


person Llistes Sugra    schedule 05.11.2010    source источник


Ответы (2)


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

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

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

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

person Pascal Thivent    schedule 05.11.2010
comment
Действительно, но для моего подхода мне нужно это значение в переменной - person Llistes Sugra; 07.11.2010
comment
@LlistesSugra: используйте все, что вам нужно. Но в любом случае JMX — это способ получить информацию. - person Pascal Thivent; 07.11.2010
comment
стандартный плагин check_jmx nagios не работает с c3p0, потому что к имени PooledDataSource добавлена ​​уникальная строка. вот почему вам нужен jmxquery.jar, о котором я упоминал ниже (он поддерживает подстановочные знаки) - person d4v3y0rk; 08.04.2015

Вы можете контролировать с помощью 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. теперь перейдите в папку 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

person d4v3y0rk    schedule 05.08.2013
comment
патч с подстановочными знаками для C3P0, похоже, утерян, я вижу, что в 0.9.5.1 есть возможность получать метрики, исключая токен идентификации mchange.com/projects/c3p0/#jmx_configuration_and_management `com.mchange.v2.c3p0.management.ExcludeIdentityToken=true` - person kisna; 05.01.2016
comment
Исходное имя хоста ссылки wildcard patch for c3p0 (jmxquery.googlecode.com), по-видимому, изменено или перемещено на code.google.com/p/jmxquery и последнюю версию исходного кода. (1.3) не может быть загружен. - person Jdamian; 21.02.2018