jrockit|JROCKIT MISSION CONTROL简介
【shitiku.jxxyjl.com--BEA认证】
摘要bea jrockit mission control是一组功能强大的工具,它是与bea jrockit 5.0 r26 jdk一起提供的。这些工具提供先进且不显眼的jvm监控和管理,适用于开发和生产环境。本文简要介绍了jrockit mission control,描述了该套件中的主要组件,该套件的组件与其他竞争技术之间的区别,以及如何使用它们来管理jrockit jvm部署。
简介jrockit mission control是与jrockit 5.0 r26 jdk一起提供的工具的总称。它是一组swing应用程序,用于以不同的方式收集和分析来自jrocikit运行时的信息。jrockit mission control的下一个版本将基于eclipse rich client platform以及以eclipse插件形式出现的独立工具。
当前用于监控、管理和分析java运行时的大部分技术都使用了相当具有侵入性的技术,比如字节码装置和jvmpi(现已废弃不用并被jvmti所取代)。jrockit mission control主要关注在完成必需的工具检测的同时对运行的系统造成最小的影响。它所使用的技术还使得工具与jvm断开连接之后应用程序立刻可以以全速运行。因此,jrockit mission control适用于在生产环境中使用。它的开销非常小,这可以将heisenberg效应降至最低,并为应用程序提供比其他开销更大的技术更有代表性的数据。
下面让我们看一看jrockit mission control的各个组件。
jrockit management consolejrockit management console是一个基于jmx的控制台,用于管理和监控jrockit jvm。它提供至关重要的状态数据和控制jrockit jvm的运行时特性的方法。在这些属性中,可以监控的是live set、堆使用、cpu负载和由在jvm内部平台mbean服务器中注册的mbean所公开的其他所有属性。jrockit management console还包括一个开销低的方法分析器和一个异常计数器。
要使用jrockit management console来监控jrockit jvm,首先必须启动要监控的jvm中的管理代理。为此,可以使用jrcmd或ctrl-break handler,借助于the_xmanagement标志(参见jrockit management console文档)来启动jrockit jvm。还可以使用jrcmd和ctrl-break handler来关闭管理代理。jrockit management console由一个运行在jrockit进程中的代理和一个独立的jrockit management console swing应用程序组成,前者用于公开在jvm内部平台mbean服务器中注册的mbean。
如图1所示,可以将多个jrockit management console实例连接到一个jrockit jvm上,而且一个management console也可以连接到多个jrockit jvm。management console应该运行在不同的机器上,或者使用–settings选项标志以使用不同的设置文件。注意,因为控制台可以处理多个jrockit jvm,通常不需要在同一台机器上运行多个management console。
图1: bea jrockit management console 通信(单击图像查看大图)
从高级架构的角度来说,被监控的jrockit包括:
一组接口——到java.lang管理接口的jrockit扩展。也存在一个动态生成的mbean,用于把jrockit的所有性能计数器公开为属性。这些扩展被内部命名为java.lang.management扩展,或者简写为jlmext。 一个用于公开这些接口的代理——与控制台的通信是借助于基于rmi的远程jmx来实现的。 jdp (jrockit discovery protocol) server——management console通过使用多播传递特定jrockit的位置而执行自动检测。jdp server是可选的。为了支持jdp,需要使用-djrockit.managementserver.autodiscovery=tru系统属性选项来启动jvm。method profiler提供一种开销非常低的方法来统计一个方法被调用的次数以及在该方法上花费的时间。只需使用少量装置代码就可以重新生成感兴趣的方法,而且只要分析器一停止,这些代码就会被删除。因此,使用方法分析器的开销只有在对选定方法进行分析的时候,而且只有被选定的方法才会有这种开销。特定于jrockit的接口的相关javadocs发布在mission control的主页上。
从高级架构的角度来看,management console swing应用程序包括:
rjmx (jrockit remote jmx服务)——提供持久化、属性订阅抽象和通知框架之类的服务。 jdp client——自动发现支持jdp的jrockit jvm。 management console gui (参见图2)——swing应用程序。图2: bea jrockit management console (单击图像查看大图)
management console应用程序引入了属性订阅(attribute subscription)的概念,这个经过简化的概念是由mbean objectname、attribute name和订阅时间间隔来定义的。控制台允许用户添加通知规则,区分和持久化来自这类属性订阅的数据。属性订阅可以基于常规的jmx mbean属性,来自一个属性的单个复合数据键,或者jmx通知数据(因为来自这类订阅的事件都是异步传输的,所以在这里订阅时间间隔没有什么意义)。可以根据数据的其他几种属性订阅创建自己的复合属性订阅,或者甚至创建由实现者来提供数据的合成属性订阅。
总而言之,jrockit management console是十分灵活的。jms监控器和管理工具提供了很多有价值的功能:
以图形的方式显示任意数字属性。 持久化任意属性集以达到离线分析的目的。 特殊的属性订阅,用于以图形的方式方便地显示暂停时间、live set使用和连续的堆使用情况。 当特定属性的用户指定条件出现时,通知规则可以发挥作用。 用户可以插入自己的通知动作和约束的代码。 java运行时的管理,包括动态修改垃圾收集策略、堆大小、nursery大小、jrockit进程相似性、启用/禁用冗长标志等等。 低开销的方法分析器。 异常计数器。 一种启动jrockit runtime analyzer 记录的方法。 一种动态调用mbean操作的方法。 一种调用jrockit ctrl-break handler的方法。想要了解更多有关如何配置控制台以使用ssl、身份验证和角色的信息,请参考jrockit文档。
jrockit runtime analyzer (jra)jra是一个java应用程序,同时也是一个jvm分析器。它在jrockit开发团队中已经存在了相当长一段时间,创建它的原始目的是让jrockit开发人员能够找到良好的方法来基于现实应用程序优化jvm,但是事实证明,它对于帮助客户在生产和开发环境中解决问题十分有用。为什么jvm用户无法让jvm开发人员访问或处理整个应用程序呢?这有很多原因。jra的工作方式就像一个动态的记录器,它记录了java应用程序和jvm在一段预定的时间内的行为。然后,您可以使用jra应用程序来分析记录过程,例如,可以分析热门方法的调用跟踪、错误的同步和其他重要的应用程序/jvm行为。bea支持机构一般使用来自客户的jra记录来帮助bea客户解决问题。
jra由两个部分组成:jvm中的记录引擎和可以用于分析结果记录的gui应用程序。记录引擎使用的信息源有几种,包括jrockit hot spot detector(优化引擎也使用它来决定应该优化哪些方法)、操作系统、jrockit memory system(最出名的就是垃圾收集器)和jrockit锁定分析器(如果支持的话)。
借助于jra工具,您可以通过图形轻松地分析jra记录中包含的信息(如图3所示)。图上可以显示暂停时间、堆使用和记录期间提交的堆大小。可以选择任意的垃圾收集(gc),它会提供有关特定垃圾收集的十分详细的信息。可以获取对热门方法的调用跟踪——不仅仅是为调用方法做准备的调用跟踪,还包括描绘通常接下来会调用的方法的调用跟踪。调用跟踪还显示是否调用了一个方法的优化版本。
图 3: bea jrockit runtime analyzer (单击图像查看大图)
在记录过程的开始和结束阶段都会使用堆直方图,它可以说明每个类(例如占据超过所使用堆控件0.5%的类)所使用的堆空间大小。所收集的堆信息也用于显示堆使用情况的饼形图。
记录时产生的开销非常低——通常低于2%。然而,因为jra在记录过程开始和结束阶段都会进行一次完全的垃圾收集,以生成堆直方图数据,所以记录过程的开始和结束阶段都会出现一个开销的高峰。
有几种启动jra记录的方式:
使用jrockit management console。 使用jrcmd。 使用支持jmx的java.lang.managemetn类的jrockit扩展。 使用jra -xxjra 命令行参数。还可以使用通知规则从management console触发jra记录,例如,可以创建一条规则,当cpu负载超过90%时启动jra记录。
可以这样说,jra是一个功能强大的jvm和java应用程序分析器,它提供了一下功能:
有效地分析jvm和java应用程序(开销通常低于3%)。 方法调用跟踪显示了采用哪条路径到达方法以及接下来会调用哪个方法。 方法热点表,说明最常被调用的方法是哪些。 十分详细的垃圾收集统计信息,说明每个gc过程中发生的各种情况。 垃圾收集策略更改。 堆使用和暂停时间的图表显示。 堆直方图,显示在记录过程的开始和结束阶段每个类对堆的使用情况。 详细的锁定分析,显示存在争用时采用了哪些锁定、它们被使用了多少次等等。 显示每个对象使用堆空间情况的饼形图,包括存储碎片。 在记录期间优化了哪些方法。想要了解有关使用jra的更多信息,请参考jrockit mission control 文档。
jrockit memory leak detectorjrockit memory leak detector工具可以帮助您快速发现内存泄漏。虽然java的自动内存管理机制把开发人员从显式地分配和释放所使用内存的重担下解放出来,但如果程序继续引用不再有用的对象时,内存泄漏还是有可能发生。
jrockit memory leak detector 为用户提供了一个趋势分析,让用户能够快速找到甚至减缓内存泄漏。趋势分析可以说明应用程序中每个类使用堆空间的情况。它将告诉您某一类型的实例使用了多少空间、它们占用了堆的哪一部分、存在多少个实例以及每秒钟堆空间使用的增加速度(以字节为单位)。
jrockit memory leak detector还提供快速找出泄漏原因的手段。可以在趋势分析表中选择一个怀疑类型,所有具有指向选中类型的实例的类型都可以显示在一个图中(如图4所示)。图形节点可以随意展开,用户可以回溯到导致引用的最终原因。类的实例可以被显示和内观,指向一个选中实例的所有实例都可以在一张实例图中显示出来。可以打开分配跟踪,跟踪某个类的所有分配情况。
想要查看有关如何使用该工具的例子和指导,请参见jrockit mission control 文档和dev2dev上的文章:memory leaks, be gone!。
图 4: bea jrockit memory leak detector (单击图像查看大图)
启动一个memory leak detector会话时,就会同时启动一个memory leak server (mls)。根据连接到的jrockit的jdk版本,所使用的要么是jmx connector in jlmext (5.0),要么是rockit management protocol (rmp) (1.4)。请注意协议的不同和网络特性及安全的区别。memory leak server是一个本地服务器,借助于它,通信的余下部分便可以在会话发生的期间完成。在客户端,可以使用一个java api与本地服务器通信(参见图5)。使用本地服务器的原因是,如果出现严重的内存泄漏情况,而jrockit用完了java堆,jrockit将无法再运行java代码。
图 5: bea jrockit memory leak detector通信 (单击图像查看大图)
memory leak detector工作在垃圾收集器的标记阶段,用于添加一些薄记来记录堆直方图(每个类合计使用的堆内存的统计信息)和生成趋势分析。在竞争性的工具中,找出内存泄漏的常用解决方案是对整个系统的整个堆取几个快照,然后比较这些快照。在生产环境中存在具有数亿兆字节的系统,在这样的系统中,这种方法并不可行。借助于jrockit memory leak detector,只有感兴趣的信息才会进行在线传送,这使得它对带宽的要求很低。当使用分配调用跟踪功能时,只有涉及到所选类的分配点的代码才会被检测。此外,当会话一结束,或者分配跟踪被关闭,检测就会被删除,而涉及到这些分配点的代码又将全速执行。
总而言之,jrockit memory leak detector是一种先进的分析工具,它具有大量新特性:
它可以执行趋势分析,这样做甚至可以发现缓慢的内存泄漏。 它进行在线分析,依赖于jrockit memory manager,而不是多次把整个堆转储到客户端,并分析其区别。 它提供一个高级的用户界面,让用户可以找到并分析泄漏类型和其他类型之间的关系,或者泄漏实例和其他实例之间的关系。 检测器带来的开销很低,可以用于生产环境中的在线分析。 不使用字节码检测。当使用memory leak detector进行分析时,java代码将继续执行,就好像它从未连接上一样。不需要修改任何java代码。可以说,jrockit memory leak detector是发现和找出java内存泄漏原因的最佳工具。想要了解有关jrockit memory leak detector的更多信息,请参考jrockit mission control 文档。
结束语现在的jrockit jdk包含一个多用途的工具套件,可用于进行监控、管理、分析和消除应用程序中的内存泄漏。jrockit mission control可免费用于开发。它可以可靠地用在生产环境中,而且在使用之后,也不会在系统中留下任何痕迹。在实际应用中,它所引起的性能开销要比其他工具小的多。
参考资料memory leaks, be gone!,作者staffan larsen (dev2dev, 2005年6月) ——提供大量有关内存泄漏检测系统的信息。 new features and tools in jrockit 5.0,作者eva andreasson (dev2dev, 2005年2月)——总结了jrockit 5.0中的许多特性,虽然有些过时,但仍然实用。 dev2dev站点上的jrockit product center dev2dev站点上的mission control section——包含更多关于jrockit工具的信息。相关试题
-
[jrockit]JROCKIT 5.0——轻松玩转JVM详细阅读
bea jrockit java虚拟机(jvm)所带来的不仅仅是性能的提升。本文探讨了jrockit 5 0 r26版本可用的一些管理和使用方面的特性。概述了jrockit mission control分析工具套件、jrockit management console的试验性hea...
-
【消息中间件推拉模式】BEA推中间件基础架构 描绘SOA产品发展蓝图详细阅读
bea宣布新的中间件软件基础架构,作为未来该公司所有服务导向架构(service-oriented architecture, soa)产品阵容发展的蓝图。 bea首度在今年开发者大会上宣布soa 360的愿景包含soa基础架构软件及软件元件存储库。名为microservice ar...
-
beautiful|BEA完善Tuxedo 继续加强SOA平台详细阅读
全球领先的企业基础架构软件公司bea系统有限公司宣布在美国旧金山隆重举行的beaworld盛会上公布的bea soa 360平台方面计划存在服务缺点,主动推出补丁应用程序,完善tuxedo,继续加强soa平台计划。当大家都在看好世界企业基建软件领袖bea systems的soa 36...
-
beaker_BEA课程介绍详细阅读
课程介绍产品 课程名称 天数费用(rmb)课程代码bea weblogic server 8 1 bea weblogic server 8 1 administration5 9000 wls-a11-81 j2ee programming with servlets and jsps w...
-
jrockit|JROCKIT MISSION CONTROL简介详细阅读
摘要 bea jrockit mission control是一组功能强大的工具,它是与bea jrockit 5 0 r26 jdk一起提供的。这些工具提供先进且不显眼的jvm监控和管理,适用于开发和生产环境。本文简要介绍了jrockit mission control,描述了该...