Как контролировать соединения 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] trace [email protected] [управляется: 10, не используется: 9, исключено: 0]
Для моего пула мониторинга (я использую nagios) я хотел бы предоставить JSP, рассказывающий, сколько подключений используется и сколько бесплатно, как говорит файл журнала.
Как я могу спросить c3p0, сколько управляемых и неиспользуемых соединений есть?
Ответы
Ответ 1
Вы можете контролировать свои пулы пула через JMX. Из документации:
Если библиотеки JMX и JMX MBeanServer доступны в вашем окружающей среды (они включают в JDK 1.5 и выше), вы можете проверить и настроить свои источники данных c3p0 с помощью Инструмент администрирования JMX (например, jconsole, в комплекте с jdk 1.5). Вы найдет, что c3p0 регистрирует MBeans под com.mchange.v2.c3p0
, один с статистика о библиотеке как целое (называемое C3P0Registry
) и MBean для каждого PooledDataSource
вас развернуть. Вы можете просматривать и изменять свои Свойства конфигурации DataSource, отслеживать активность Connection, Отчеты и пулы потоков и resetпулов и источников данных через PooledDataSource
MBean. (Вы можете хотите просмотреть документы API PooledDataSource
для документация операции.)
Кстати, похоже, JMX-плагины для Nagios, вы не вынуждены использовать JSP.
Ответ 2
Вы можете отслеживать с помощью Icinga/Nagios, как это.
-
Загрузите JMXQuery из кода google. Вам нужно будет проверить ревизию 18 так.
svn checkout -r 18 http://jmxquery.googlecode.com/svn/trunk/ jmxquery-read-only
-
Загрузите этот патч. подстановочный шаблон для c3p0
-
используйте эту команду для исправления исходного кода: (убедитесь, что вы находитесь в каталоге jmxquery-read-only/src/main)
patch -p0 -i wildcard_patch.diff
-
теперь загрузите Apache Maven и извлеките его с помощью этой команды
tar -zxvf apache-maven-*-bin.tar.gz
-
теперь cd в папку jmxquery-read-only и выполните следующую команду (предполагая, что apache maven и jmxquery находятся в одной папке)
../apache-maven-*/bin/mvn compile
-
выполните следующую команду:
../apache-maven-3.0.3/bin/mvn package
-
теперь вы должны создать файл 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