我在JBoss战争中使用Hibernate,使用c3p0进行连接池,都在我的类路径中的hibernate.cfg.xml配置文件中配置
<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 [managed:10,unused:9,excluded:0]
对于我的监控池(我正在使用nagios)我想提供一个JSP,告诉我们正在使用多少个连接以及有多少个是免费的,就像日志文件所说的那样。
如何询问c3p0有多少托管和未使用的连接?
答案 0 :(得分:20)
您可以通过JMX监控您的连接池。来自文档:
Configuring and Managing c3p0 via JMX
如果是JMX库和JMX 您可以使用MBeanServer 环境(它们包含在JDK中 1.5及以上),您可以通过a检查和配置c3p0数据源 JMX管理工具(如 jconsole,与jdk 1.5捆绑在一起)。您 会发现c3p0会注册MBeans 在
com.mchange.v2.c3p0
下,有一个 关于图书馆的统计数据 整体(称为C3P0Registry
),和 每个PooledDataSource
你的MBean 部署。您可以查看和修改您的 DataSource的配置属性, 跟踪Connection的活动, 语句和线程池,并重置 池和DataSources通过PooledDataSource
MBean。 (你可以 希望查看API文档PooledDataSource
可用的文档 操作)。
顺便说一下,似乎有Nagios的JMX插件,你不会被迫使用JSP。
答案 1 :(得分:1)
您可以像这样使用Icinga / Nagios进行监控。
从谷歌代码下载JMXQuery。您需要查看版本18,如此。
svn checkout -r 18 http://jmxquery.googlecode.com/svn/trunk/ jmxquery-read-only
下载此修补程序。 wildcard patch for c3p0
使用此命令修补源代码:(确保您位于jmxquery-read-only / src / main目录中)
patch -p0 -i wildcard_patch.diff
现在下载Apache Maven并使用此命令提取它
tar -zxvf apache-maven-*-bin.tar.gz
现在进入jmxquery-read-only文件夹并运行以下命令(假设apache maven和jmxquery在同一个文件夹中)
../apache-maven-*/bin/mvn compile
然后运行以下命令:
../apache-maven-3.0.3/bin/mvn package
现在您应该已经生成了一个jmxquery.jar文件,您可以使用它来查询c3p0连接池,如下所示:( check_jmx文件可以从google代码网站上正常下载jmxquery代码获得。使用this link)
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