監控jboss4.2.3的串連池

來源:互聯網
上載者:User

<%@ 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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.