监控jboss4.2.3的连接池

<%@ page contentType="text/html; charset=GB2312"%>
<%@page import="java.sql.*,java.util.*"%>

<%@ page
import="javax.sql.DataSource,javax.naming.InitialContext,java.sql.*"%>
<%@ page
import="javax.management.ObjectName,javax.naming.InitialContext,org.jboss.jmx.adaptor.rmi.RMIAdaptor"%>

<%
//
//用来监控jboss连接池,可以查看那些操作没有关闭链接;
//使用的时候需要修改数据源的名称<jndi-name>DefaultDS</jndi-name>
//如果InUseConnectionCount大于0,说明有连接正在使用,如果经过一段时间还是大于0,
//那么程序中可能有链接没有关闭。
//也可以通过jboss的jmx-console来监控!
//http://localhost:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.jca%3Aservice%3DManagedConnectionPool%2Cname%3DeBuilder

try {
// Get RMIAdaptor Object
out.println(new java.util.Date().toString()+"<br>");
Properties pro = new Properties();
pro.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
pro.setProperty("java.naming.provider.url",
"jnp://localhost:1099");
pro.setProperty("java.naming.factory.url.pkgs",
"org.jboss.naming:org.jnp.interfaces");
InitialContext ic = new InitialContext(pro);
RMIAdaptor server = (RMIAdaptor) ic
.lookup("jmx/rmi/RMIAdaptor");

ObjectName name = new ObjectName(
"jboss.jca:name=DefaultDS,service=ManagedConnectionPool");
ObjectName lname = new ObjectName(
"jboss.jca:name=DefaultDS,service=LocalTxCM");

String AvailableConnectionCount = server.getAttribute(name,
"AvailableConnectionCount").toString();
out.println("===========AvailableConnectionCount============"
+ AvailableConnectionCount + "<br>");

String InUseConnectionCount = server.getAttribute(name,
"InUseConnectionCount").toString();
out.println("===========InUseConnectionCount============"
+ InUseConnectionCount + "<br>");

String ConnectionCreatedCount = server.getAttribute(name,
"ConnectionCreatedCount").toString();
out.println("===========ConnectionCreatedCount============"
+ ConnectionCreatedCount + "<br>");

String ConnectionDestroyedCount = server.getAttribute(name,
"ConnectionDestroyedCount").toString();
out.println("===========ConnectionDestroyedCount============"
+ ConnectionDestroyedCount + "<br>");

String MaxConnectionsInUseCount = server.getAttribute(name,
"MaxConnectionsInUseCount").toString();
out.println("===========MaxConnectionsInUseCount ============"
+ MaxConnectionsInUseCount + "<br>");

String MaxSize = server.getAttribute(name, "MaxSize")
.toString();
out.println("===========MaxSize ============" + MaxSize
+ "<br>");


} catch (Exception ex) {
out.println("ERROR:" + ex.getMessage());
ex.printStackTrace();
}

%>
<pre>
//名词解释:
//BlockingTimeoutMillis :抛出异常前最大的等待连接时间
//
//IdleTimeoutMinutes :关闭连接前连接空闲的最大时间。即连接创建后由该项目规定的时间内未使用则释放连接,
//即系统创建的连接!
//
//InUseConnectionCount 表示表示用户正在使用的连接!
//
//ConnectionCount 这个项目代表在服务开启后,总共使用的连接数!
//
// ConnectionCreatedCount 表示jboss应用服务器自己创建的连接!
//
//ConnectionDestroyedCount 表示jboss释放的连接,包括用户释放的和系统自己释放的!
//
//IdleTimeoutMinutes 表示闲置释放时间,即连接创建后由该项目规定的时间内未使用则释放连接,即系统创建的连接!
//
// InUseConnectionCount 表示表示用户正在使用的连接!
//
//MaxConnectionsInUseCount 表示用户正在使用连接的峰值!
//
//其中InUseConnectionCount越少越好! ConnectionCreatedCount 越大越好! 这两项是关键!!
//
//AvailableConnectionCount为可用的连接数! 如果你的页面刷新AvailableConnectionCount的值没有变得话,说明你的页面创建的连接都关闭了,如果他的值减少了, 那么减少了多少,表示你有多少连接没有释放!!如果有可能的话,最好每个页面都测试一下,是否完全释放!
//
//而 MaxConnectionsInUseCount 的值刚好和 AvailableConnectionCount相对应: 前者减少了多少,后者就增加多少!!!
//
//而 MaxConnectionsInUseCount + AvailableConnectionCount = MaxSize 它们存在着这种关系!!
//
//可以这样说InUseConnectionCount 就是未释放的连接数!!! 而MaxConnectionsInUseCount 则是未释放连接数的峰值
//
//在具体应用中可以通过servlet 及定时器实现对连接池的实时监控。
</pre>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Druid连接池是一个专门用于监控数据库连接和SQL执行情况的工具。它被称为"为监控而生的数据库连接池",具有出色的功能、性能和扩展性,超过了其他常见的数据库连接池,如DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等。 Druid连接池可以通过引入Druid提供的监控工具Druid Monitor来实现监控和统计数据源以及SQL的执行情况。这个工具可以帮助开发人员监测连接池的连接情况、性能指标、执行的SQL语句等信息,以便于进行性能调优和故障排查。通过使用Druid Monitor,开发人员可以方便地获取连接池的运行状态、连接数、活跃连接数、SQL执行情况、执行时间等详细信息,从而更好地了解系统的运行情况,及时发现和解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [数据库连接池 ( 五 ) Druid 数据监控](https://blog.csdn.net/yuanchun05/article/details/127174870)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [druid连接池监控](https://blog.csdn.net/zguoshuaiiii/article/details/78402883)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值