如何监控c3p0连接
我在JBoss战争中使用Hibernate,使用c3p0进行连接池,都在我的类路径中的hibernate.cfg.xml配置文件中配置
org.hibernate.connection.C3P0ConnectionProvider
我见过server.log会生成包含有关连接池的有趣信息的行:
DEBUG [com.mchange.v2.resourcepool.BasicResourcePool] trace com.mchange.v2.resourcepool.BasicResourcePool@63f5e4b6 [managed:10,unused:9,excluded:0]
对于我的监控池(我正在使用nagios),我想提供一个JSP,告诉我们正在使用多少连接以及有多少连接是免费的,正如日志文件所说的那样。
我怎么能问c3p0有多少托管和未使用的连接?
您可以通过JMX监视连接池。 从文档:
通过JMX配置和管理c3p0
如果您的环境中有JMX库和JMX MBeanServer(它们包含在JDK 1.5及更高版本中),则可以通过JMX管理工具(例如jconsole,与jdk 1.5捆绑在一起)检查和配置c3p0数据源。 您会发现c3p0在
com.mchange.v2.c3p0
下注册了MBean,其中一个包含有关整个库的统计信息(称为C3P0Registry
),以及您部署的每个PooledDataSource
的MBean。 您可以查看和修改DataSource的配置属性,跟踪Connection,Statement和Thread池的活动,以及通过PooledDataSource
MBean重置池和DataSource。 (您可能希望查看PooledDataSource
的API文档以PooledDataSource
可用操作的文档。)
顺便说一下,似乎有Nagios的JMX插件,你不必被迫使用JSP。
您可以像这样使用Icinga / Nagios进行监控。
-
从谷歌代码下载JMXQuery。 您需要查看修订版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
-
现在进入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代码获得,就像正常一样。使用此链接 )
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
- C3P0配置! 在哪里和如何?
- c3p0说 – “java.lang.Exception:DEBUG ONLY:过期资源检出堆栈跟踪”启动一个hibernate事务
- 我的tomcat启动时C3P0 APPARENT DEADLOCK
- Eclipselink Pooling相当于C3PO
- Oracle通用连接池(UCP)有多好
- 在Hibernate 3.2中使用连接池(c3p0-0.9.1.2)时,获取exception和应用程序无法与MySqL数据库连接?
- c3p0在hwaitnate的awaitAvailable中挂起
- 如何为具有多个数据源的grails 2.X应用程序配置c3p0?
- Java Hibernate / C3P0错误:“无法获取连接元数据。 客户端尝试签出连接的尝试已经超时。“