电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

使用JMX監控Tomcat示例代碼

瀏覽:243日期:2023-06-12 15:17:15
目錄
  • 示例代碼
  • 完整的示例代碼文件

示例代碼

String jmxURL = "service:jmx:rmi:///jndi/rmi://192.168.10.93:8999/jmxrmi";
JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);

Map map = new HashMap();
// 用戶名密碼,在jmxremote.password文件中查看
String[] credentials = new String[] { "monitorRole", "tomcat" };
map.put("jmx.remote.credentials", credentials);
JMXConnector connector = JMXConnectorFactory.connect(serviceURL, map);
MBeanServerConnection mbsc = connector.getMBeanServerConnection();

// 端口最好是動態取得
ObjectName threadObjName = new ObjectName("Catalina:type=ThreadPool,name=http-8080");
MBeanInfo mbInfo = mbsc.getMBeanInfo(threadObjName);

// tomcat的線程數對應的屬性值
String attrName = "currentThreadCount";
MBeanAttributeInfo[] mbAttributes = mbInfo.getAttributes();
System.out.println("currentThreadCount:" + mbsc.getAttribute(threadObjName, attrName));

完整的示例代碼文件

import java.lang.management.MemoryUsage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanServerConnection;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
/**
 * @author liuyazhuang
 * @date 2016-05-31 
 */
public class JMXTest {

    /**
     * main方法
     * @param args
     */
    public static void main(String[] args) {
try {

    String jmxURL = "service:jmx:rmi:///jndi/rmi://127.0.0.1:8999/jmxrmi";

    JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);

    Map map = new HashMap();
    String[] credentials = new String[] { "monitorRole", "tomcat" };
    map.put("jmx.remote.credentials", credentials);
    JMXConnector connector = JMXConnectorFactory.connect(serviceURL,
    map);
    MBeanServerConnection mbsc = connector.getMBeanServerConnection();

    // 端口最好是動態取得
    ObjectName threadObjName = new ObjectName(
    "Catalina:type=ThreadPool,name=http-8080");
    MBeanInfo mbInfo = mbsc.getMBeanInfo(threadObjName);

    String attrName = "currentThreadCount";// tomcat的線程數對應的屬性值
    MBeanAttributeInfo[] mbAttributes = mbInfo.getAttributes();
    System.out.println("currentThreadCount:"
    + mbsc.getAttribute(threadObjName, attrName));

    // heap
    for (int j = 0; j < mbsc.getDomains().length; j++) {
System.out.println("###########" + mbsc.getDomains()[j]);
    }
    Set MBeanset = mbsc.queryMBeans(null, null);
    System.out.println("MBeanset.size() : " + MBeanset.size());
    Iterator MBeansetIterator = MBeanset.iterator();
    while (MBeansetIterator.hasNext()) {
ObjectInstance objectInstance = (ObjectInstance) MBeansetIterator
.next();
ObjectName objectName = objectInstance.getObjectName();
String canonicalName = objectName.getCanonicalName();
System.out.println("canonicalName : " + canonicalName);
if (canonicalName
.equals("Catalina:host=localhost,type=Cluster")) {
    // Get details of cluster MBeans
    System.out.println("Cluster MBeans Details:");
    System.out
    .println("=========================================");
    // getMBeansDetails(canonicalName);
    String canonicalKeyPropList = objectName
    .getCanonicalKeyPropertyListString();
}
    }
    // ------------------------- system ----------------------
    ObjectName runtimeObjName = new ObjectName("java.lang:type=Runtime");
    System.out.println("廠商:"
    + (String) mbsc.getAttribute(runtimeObjName, "VmVendor"));
    System.out.println("程序:"
    + (String) mbsc.getAttribute(runtimeObjName, "VmName"));
    System.out.println("版本:"
    + (String) mbsc.getAttribute(runtimeObjName, "VmVersion"));
    Date starttime = new Date((Long) mbsc.getAttribute(runtimeObjName,
    "StartTime"));
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println("啟動時間:" + df.format(starttime));

    Long timespan = (Long) mbsc.getAttribute(runtimeObjName, "Uptime");
    System.out.println("連續工作時間:" + JMXTest.formatTimeSpan(timespan));
    // ------------------------ JVM -------------------------
    // 堆使用率
    ObjectName heapObjName = new ObjectName("java.lang:type=Memory");
    MemoryUsage heapMemoryUsage = MemoryUsage
    .from((CompositeDataSupport) mbsc.getAttribute(heapObjName,
    "HeapMemoryUsage"));
    long maxMemory = heapMemoryUsage.getMax();// 堆最大
    long commitMemory = heapMemoryUsage.getCommitted();// 堆當前分配
    long usedMemory = heapMemoryUsage.getUsed();
    System.out.println("heap:" + (double) usedMemory * 100
    / commitMemory + "%");// 堆使用率

    MemoryUsage nonheapMemoryUsage = MemoryUsage
    .from((CompositeDataSupport) mbsc.getAttribute(heapObjName,
    "NonHeapMemoryUsage"));
    long noncommitMemory = nonheapMemoryUsage.getCommitted();
    long nonusedMemory = heapMemoryUsage.getUsed();
    System.out.println("nonheap:" + (double) nonusedMemory * 100
    / noncommitMemory + "%");

    ObjectName permObjName = new ObjectName(
    "java.lang:type=MemoryPool,name=Perm Gen");
    MemoryUsage permGenUsage = MemoryUsage
    .from((CompositeDataSupport) mbsc.getAttribute(permObjName,
    "Usage"));
    long committed = permGenUsage.getCommitted();// 持久堆大小
    long used = heapMemoryUsage.getUsed();//
    System.out.println("perm gen:" + (double) used * 100 / committed
    + "%");// 持久堆使用率

    // -------------------- Session ---------------
    ObjectName managerObjName = new ObjectName(
    "Catalina:type=Manager,*");
    Set<ObjectName> s = mbsc.queryNames(managerObjName, null);
    for (ObjectName obj : s) {
System.out.println("應用名:" + obj.getKeyProperty("path"));
ObjectName objname = new ObjectName(obj.getCanonicalName());
System.out.println("最大會話數:"
+ mbsc.getAttribute(objname, "maxActiveSessions"));
System.out.println("會話數:"
+ mbsc.getAttribute(objname, "activeSessions"));
System.out.println("活動會話數:"
+ mbsc.getAttribute(objname, "sessionCounter"));
    }

    // ----------------- Thread Pool ----------------
    ObjectName threadpoolObjName = new ObjectName(
    "Catalina:type=ThreadPool,*");
    Set<ObjectName> s2 = mbsc.queryNames(threadpoolObjName, null);
    for (ObjectName obj : s2) {
System.out.println("端口名:" + obj.getKeyProperty("name"));
ObjectName objname = new ObjectName(obj.getCanonicalName());
System.out.println("最大線程數:"
+ mbsc.getAttribute(objname, "maxThreads"));
System.out.println("當前線程數:"
+ mbsc.getAttribute(objname, "currentThreadCount"));
System.out.println("繁忙線程數:"
+ mbsc.getAttribute(objname, "currentThreadsBusy"));
    }

} catch (Exception e) {
    e.printStackTrace();
}
    }

    public static String formatTimeSpan(long span) {
long minseconds = span % 1000;

span = span / 1000;
long seconds = span % 60;

span = span / 60;
long mins = span % 60;

span = span / 60;
long hours = span % 24;

span = span / 24;
long days = span;
return (new Formatter()).format("%1$d天 %2$02d:%3$02d:%4$02d.%5$03d",
days, hours, mins, seconds, minseconds).toString();
    }
}

到此這篇關于使用JMX監控Tomcat示例代碼的文章就介紹到這了,更多相關JMX監控Tomcat內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: Tomcat
相關文章:
主站蜘蛛池模板: 黑田精工电磁阀-CAMMOZI气缸-ROSS电磁-上海茂硕机械设备有限公司 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 进口消泡剂-道康宁消泡剂-陶氏消泡剂-大洋消泡剂 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 宁夏档案密集柜,智能密集柜,电动手摇密集柜-盛隆柜业宁夏档案密集柜厂家 | 书信之家_书信标准模板范文大全| 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 江西自考网-江西自学考试网| 宜兴紫砂壶知识分享 - 宜兴壶人 医用空气消毒机-医用管路消毒机-工作服消毒柜-成都三康王 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 波纹补偿器_不锈钢波纹补偿器_巩义市润达管道设备制造有限公司 | 电梯乘运质量测试仪_电梯安全评估测试仪-武汉懿之刻 | 众品家具网-家具品牌招商_家具代理加盟_家具门户的首选网络媒体。 | 钢结构-钢结构厂房-钢结构工程[江苏海逵钢构厂] | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 耙式干燥机_真空耙式干燥机厂家-无锡鹏茂化工装备有限公司 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 高温高压釜(氢化反应釜)百科 | 太阳能发电系统-太阳能逆变器,控制器-河北沐天太阳能科技首页 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 精密冲床,高速冲床等冲压设备生产商-常州晋志德压力机厂 | 福州时代广告制作装饰有限公司-福州广告公司广告牌制作,福州展厅文化墙广告设计, | 缝纫客 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 扬州汇丰仪表有限公司 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 诗词大全-古诗名句 - 古诗词赏析 | 技德应用| 甲级防雷检测仪-乙级防雷检测仪厂家-上海胜绪电气有限公司 | 精雕机-火花机-精雕机 cnc-高速精雕机-电火花机-广东鼎拓机械科技有限公司 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 直流大电流电源,燃料电池检漏设备-上海政飞 | 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 卧涛科技有限公司科技项目申报公司|高新技术企业申报|专利申请 |