JMX的l理解
一、JMX的一些定义与用途
Java Management Extensions:Java管理扩展,是管理系统和资源之间的一个接口,它定义了管理系统和资源之间交互的标准。
1、专门管理,监控jvm的一些信息的,特别是visual vm这个监控jvm的东西,还有一个添加JMX连接的时候
2、能使得基于java语言开发的程序能被管理,并且是可扩展的。
3、用jmx把需要配置的属性集中在一个类中,然后写一个MBean,再进行相关配置。另外JMX还提供了一个工具页,以方便我们对参数值进行修改。
4、让开发者和管理者可以获取程序运行的状态以及动态的修改程序的相关配置。
程序开启JMX功能可以监控程序的资源使用情况,因为JDK自带了关于程序资源情况的MBean工具类
我们可以使用类似的设计模式,对我们程序中的资源进行 监控和控制
二、JMX入门
先了解基本的专业术语:
1、MBean:是Managed Bean的简称,在JMX中MBean代表一个被管理的资源实例,通过MBean暴露一系列的方法和属性,外界可以获取被管理的资源的状态和操纵MBean的行为。事实上,MBean就是一个Java Object。同javabean模型一样,外界使用反射获取Object的值和调用Object的方法,只是MBean提供了更加容易操作的反射的使用。MBean包括4种类型:标准MBean、动态MBean,开放MBean,模型MBean。
2、MBeanServer:MBeanServer是MBean的容器。MBeanServer管理这些MBean,并且通过代理外界对它们的访问。MBeanServer提供了一种注册机制,通过注册Adaptor和Connector,以及MBean到MBeanServer,并且通过代理外界对它们的访问,外界可以通过名字来得到相应的MBean实例。
3、JMX Agent:Agent只是一个java进程,它包括这个MBeanServer和一系列附加的MBeanService。当然这些Service也是通过MBean的形式来发布。
4、Protocol Adaptors and Connectors:JMX Agent通过各种各样的Adaptor 和Connector来与外界(JVM之外)进行通信。同样外界(JVM之外)也必须通过某个Adaptor和Connector向来JMX Agent发送管理或控制请求。jdk5.1中,sun提供很多Adaptor和Connector的实现。
Adaptor 和Connector·的区别在于:Adaptor是使用某种协议(Http和SNMP)来与JMX Agent获得联系,Agent端会有一个对象(Adaptor)来处理有关协议的细节。比如SNMP Adaptor·和HTTP Adapter.而Connector·在Agent端和client端都必须有这样一个对象来处理响应的请求和应答。比如RMI Connector·。
JMX Agent可以带有任意多个Adaptor·,因此可以使用多种不同的方式访问Agent。
JMX基本构架:JMX分为三层,分别负责处理不同的事务。它们分别是:
1、Instrumention层:Instrumention 层主要包括了一系列的接口定义和描述如何开发MBean的规范。通常JMX所管理的资源有一个或多个MBean组成,因此这个资源可以是任何由Java语言开发的组件,或是一个JavaWrapper包装的其他语言开发的资源。
2、Agent层:Agent用来管理相应的资源,并且为远端用户提供访问的接口。Agent层构建在Intrumentation层之上,并且使用管理Instrumentation层内部的组件。通常Agent由一个MBeanServer组成。另外Agent还提供一个或多个Adapter或Connector以供外界的访问。
3、Distributed层:Distributed层关心Agent如何被远端用户访问的细节。它定义了一系列用来访问Agent的接口和组件,包括Adapter和Connector的描述。

三、应用场景
1、中间件软件weblogic的管理页面就是基于JMX开发的。
2、hibernate号称实现了JMX规范,将可管理,可调用的MBean注册到MBeanServer中,通过一种类似web服务的方式公布出去,并且伴有一个名字,可以通过该名字找到该MBean,并且,这里的MBean是可以被管理的。
3、Tomcat的自带应用manager就是使用了JMX方式来管理Tomcat。以此完成我web应用的动态部署、启动、停止。
4、JBoss则整个系统都基于JMX架构,使用JMX治理内部的各个service。
5、基于java的开源网管软件Hyperic HQ,通过JMX与各被治理资源进行通讯和信息采集。
JMX是一个治理的框架
当我们想使用JMX的时候,就要问,我们的系统当中有需要监控治理的资源或者对象吗?实事求是一点,我们不能为了想使用一个高端的技术,就歪曲系统的本来面目。
假如肯定要用,接着就看这些资源是否有生命周期。
经典案例:JBoss就是将所有可部署的组件作为资源来治理,这些组件都有生命周期。这个理念甚至延伸到了其系统内部,将其内部的服务作为组件纳入到JMX中来,成就了JBoss基于JMX的微内核系统。
典型的应用场景:
一个系统中,个内部模块系统之间的,基于接口方式的互相调用和治理,使用JMX是最佳方案。。带来的好处是:
1、面向接口,远程调用对于开发人员是透明的,模块在调用JMX接口时,与调用本地方法几乎相同。
2、可视化的治理界面,通过Jconsole等JMX客户端。可以实时监控系统,并且可实时调用方法进行某些操作。
四、JMX与Web Service
1、个人认为,我们实现JMX规范,将东西发布出去,和通过Web service的方式是很类似的,也是可以远程调用的,只是相对的web service的方式更加SOA一些。
2、从这里,我觉得JMX可以实现的,我们也都可以通过web service实现,只是看在它有个M上,以后如果有什么系统管理,监控方面的,可以考虑使用它,也许开发,个人觉得还是使用web service好一些。
3、选择webservice,xmlrpc等,但是这些都需要手工编写或用工具生成大量的代码来辅助完成接口间的java对象序列化。
五、现在的JMX连接方式
提供了三种Connector:RMI Connector / JMXMP Connector(JMX message protocol Connector) / Jolokia
1、RMI Connector 用JAVA的RMI功能来实现,可以在本地调用接口对象,这个不多说,因为只能是JAVA客户端使用,实现不了异构系统。
2、JMXMP Connector 就是使用协议在通讯了,Java也有实现这种连接的API,其他语言肯定也有的,这个能实现异构系统调用,是RMC模式。
3、Jolokia is a JMX-HTTP bridge giving an alternative method of accessing JMX beans,can be accessed using /jolokia on your management HTTP server.
实现原理
从Java 5开始,JDK就是提供非常有名的java.lang.management包,包里提供了许多MXBean的接口类,开发者可以很方便的获取到JVM的内存,GC,线程,锁,class,甚至操作系统层面的各种信息。我们可以 遍历程序所有的MBean查看。
JMX的l理解的更多相关文章
- jmeter 后台运行 setsid bin/jmeter -n -t .jmx文件 -l .jtl文件
备注: 另外,在Linux下我们有时候希望线程可以在后台运行,这样我们关闭当前连接后,线程依然可以运行,这里提供一个将 jmeter命令设置为后台线程的方法. 使用setsid命令: setsid ...
- jenkins jmeter持续集成批处理jmx脚本
这篇文章介绍jenkis jmeter的持续集成,利用jenkins定时任务去批处理执行jmeter的jmx脚本文件,并且生成测试报告 1:jmeter的安装这里我就不在赘述了,如有问题可参考我的jm ...
- Jmeter简单回顾
之前公众号推文一上手就分享如何测接口, 其实忽略了一些概念性的东西, 今天来给大家拾遗补缺, 做个回顾吧. 一. JMeter介绍 jmeter能做什么,来自官网的解释: Ability to loa ...
- Windows和Linux的Jmeter分布式集群压力测试
Windows的Jmeter分布式集群压力测试 原文:https://blog.csdn.net/cyjs1988/article/details/80267475 在使用Jmeter进行性能测试时, ...
- jmeter录制https请求
工具:Jmeter4.0 + Java1.8 需求:对某https网站进行 登录-修改信息-退出 场景的压力测试 方法:使用Apache JMeter HTTP(S) Test Script Reco ...
- JMeter学习笔记(六)-负载与监听
1. 场景设计 场景设计的原则:忠于用户实际操作,组合用户的各种操作到场景中来. JMeter场景主要通过线程组设置来完成的,对于复杂场景还需要与逻辑控制器配合完成. 2.场景设置 JMeter线程组 ...
- Jmeter3.0-多维度的图形化HTML报告
本文转载于推酷:http://www.tuicool.com/articles/BNvuEzr 在JMeter3.0之前,官方只提供在工具的UI上对测试结果部分维度的图形化展示,这对我带来了两方面的困 ...
- JMeter接口压力测试课程入门到高级实战
章节一压力测试课程介绍 1.2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介: 讲解课程安排,使用的Jmeter版本 讲课风格:涉及的组件,操作配置多,不会一次性讲解,会先讲部分 ...
- Jmeter Cluster
Jmeter 是开源软件,100%纯java应用程序,专门为负载测试和性能测试. Jmeter的特性包括: 1.负载测试和性能测试许多不同的服务器/协议类型: Web - HTTP, HTTPS SO ...
随机推荐
- ZooKeeper学习总结 第一篇:ZooKeeper快速入门
1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务.名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的核 ...
- ubuntu添加普通用户,并解决远程登录
创建普通用户 # 创建用户,并指定用户目录,加入用户组sudo useradd username -d /home/username -m #设置密码 sudo passwd username #给用 ...
- 【Topcoder 1643】PossibleOrders
题意:给一些等价关系,问把所有的数按照大小排序的种类数. 思路:首先并查集维护等价类,然后设有\(n\)个等价类. 那么就可以\(dp\)了. 考虑\(dp(i)\)表示还剩下\(i\)个等价类,答案 ...
- 《jmeter:菜鸟入门到进阶》系列
jmeter是我从事软件测试工作以来接触的第一个性能测试工具,也是耗费时间精力最多的一个工具,当然,学习jmeter过程中,由于知识储备不够,也顺带学习了很多其他相关的一些知识. 一直有个想法,就是把 ...
- 在 .NET Core 中结合 HttpClientFactory 使用 Polly(下篇)
译者:王亮作者:Polly 团队原文:http://t.cn/EhZ90oq声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的(包括标题).其中可能会去除一些不影响理解但本人实在不知道如 ...
- 30分钟了解Springboot整合Shiro
项目结构截图: 项目在结构上没有任何特殊之处,基本就是MVC的传统结构重点需要关注的是3个Entity类.2个Controller类和1个Config类. 首先,提供pom的完整文档结构: <p ...
- php函数 array_column
<?php $arr = [ [ 'id'=>1, 'name'=>'wang', 'age'=>10 ], [ 'id'=>2, 'name'=>'yong', ...
- C# Note36: .NET unit testing framework
It’s usually good practice to have automated unit tests while developing your code. Doing so helps y ...
- 第一章· Redis入门部署及持久化介绍
Redis简介 Redis安装部署 Redis持久化 Redis简介 软件说明: Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品. ...
- codeforces645B
Mischievous Mess Makers CodeForces - 645B It is a balmy spring afternoon, and Farmer John's n cows a ...