WebSphere应用服务器内存泄漏探测与诊断工具11页

上传人:lis****210 文档编号:149248628 上传时间:2022-09-06 格式:DOCX 页数:10 大小:20.13KB
收藏 版权申诉 举报 下载
WebSphere应用服务器内存泄漏探测与诊断工具11页_第1页
第1页 / 共10页
WebSphere应用服务器内存泄漏探测与诊断工具11页_第2页
第2页 / 共10页
WebSphere应用服务器内存泄漏探测与诊断工具11页_第3页
第3页 / 共10页
资源描述:

《WebSphere应用服务器内存泄漏探测与诊断工具11页》由会员分享,可在线阅读,更多相关《WebSphere应用服务器内存泄漏探测与诊断工具11页(10页珍藏版)》请在装配图网上搜索。

1、WebSphere应用服务器内存泄漏探测与诊断工具级别:中级李学朝(lixueccn.ibm),高级软件工程师,IBM中国软件开发 中心2019年11月21日本文介绍了如何在WebSphere应用服务器中实现应用程序内存泄漏的探 测,并且针对IBM所提供的系列分析与诊断工具,给出了具体的配置步骤和使 用最佳实践。引言内存泄漏是比较常见的一种应用程序性能问题,一旦发生,则系统的可 用内存和性能持续下降;最终将导致内存不足(OutOfMemory),系统彻底宕 掉,不能响应任何请求,其危害相当严重。同时,Java堆(Heap)中大量的对 象以及对象间之复杂关系,导致内存泄漏问题的探测和分析均比较困

2、难,采用 相应的辅助工具是很必要的。WebSphere应用服务器提供了系列针对内存问题的探测和分析诊断工具, 这些工具可以帮助用户进行内存问题的及时探测,保证系统在发生OOM之前, 用户可以在无须进行复杂分析的条件下,预知在其部署的应用中是否存在内存 泄漏的问题。如果确有内存泄漏现象发生,WebSphere还提供了相应的工具, 可以帮助用户进行分析诊断,从而找到内存泄漏的真正原因。1. 内存泄漏探测和诊断步骤实践中,我们可以采用以下的步骤来处理内存泄漏的问题:(1) 首先,在WebSphere中我们启用实时探测内存泄漏工具,WebSphere性 能诊断顾问会对内存泄漏提前发出警告信息。(2)

3、启用WebSphere自带的Tivoli性能查看器监视系统的JVM使用状 况,确定内存泄漏是否正在发生。(3) 根据需要,生成详细内存回收日志,使用PMATX具分析并确定泄漏 的时间,周期等。(4) 生成单个或者多个Heapdump文件,选用MDD4J进行分析诊断,找到 内存泄漏的真正原因。(5) 提交开发部门进行代码修复,然后重新部署到WebSphere应用服务 器。接下来的部分,我们针对每个环节的配置和工具使用进行阐述。2. WebSphere应用服务器中内存泄漏的探测工具2.1性能诊断顾问介绍性能诊断顾问(Performance and Diagnostic Advisor),在 Web

4、Sphere 应用服务器6.0.2版本之前称为运行时性能顾问(Runtime Performance Advisor)。该工具可以周期性的检查WebSphere的设置,并给出调整的推荐 值。自WebSphere应用服务器6.0.2版本开始,该工具实现了一种轻量级的内 存探测机制,可以非常容易的帮助用户探测是否在系统中存在内存泄漏问题, 并提前通过日志和管理控制台进行通知。这样就给用户以足够的时间采取必要 的措施防止系统宕掉,同时可以收集或生成相关的文件以进行离线的分析,来 查找泄漏的根本原因。2.2配置可以在WebSphere应用服务器的管理控制台中启用性能诊断顾问(1) 访问管理控制台-服务

5、器-应用程序服务器。(2) 选择所要配置的服务器。(3) 在性能区域,选择性能和诊断顾问程序配置。(4) 如图所示,有两个Tab,运行时和配置。区别在于,运行时里面的内容 无须重启服务器就可以生效,但下次重启服务器的时候,这些配置也会丢失。 配置Tab里面的内容只有在服务器重启后才生效,而且配置的内容也会一直存 在,除非再次登陆并去掉所选项。(5) 在其他属性区域,点击性能和诊断建议配置,确保内存泄漏规则处于 运行状态(绿色箭头)。2.3查看泄漏警告信息WebSphere性能诊断顾问输出信息可以显示在WebSphere的管理控制台, 并记录在WebSphere应用服务器的SystemOut.l

6、og日志文件里面。(1) SystemOut.log 日志8/31/06 13: 21: 43: 545 CST00000010 TraceResponse WTUNE9001W: Heap utilization patterns indicate that you may have amemory leak Additional explanatory data follows.Data values for free memory between 8/31/06 1: 20 PM and 8/31/06 1: 21 PM were consistently below minimum r

7、equired percentage.(2) 管理控制台-登陆管理控制台-故障诊断-运行时消息-点击运行时警告3. Java虚拟机概要分析和详细垃圾回收进一步检测是否有内存泄漏的发生,以及泄漏发生的时间,周期和速 度,我们可以启用Java虚拟机中的详细垃圾回收,然后分析相应的日志。 WebSphere应用服务器6.1使用了 Java SDK5.0,在 Window,Linux,AIX,i5/OS,z/Linux 和 z/OS 上使用 了 IBM 的 JAVA 虚拟机,在 Solaris和HP-UX上使用Sun的JVM。Java虚拟机概要分析工具接口 (Java Virtual Machine

8、Tool Interface,JVMTI)支持从运行应用程序服务器的 Java虚拟机(JVM)收集信息(如,关于垃圾回收的数据、对象利用和线程状态) 并且支持更全面的性能分析。一旦启用了 JVMTI,可以使用PMI定制选项来启 用所选统计信息以收集特定数据。3.1启用Java虚拟机概要分析和详细垃圾回收配置步骤配置步骤:1. 在控制台导航树中单击服务器应用程序服务器2. 单击选择所需应用程序服务器。3. 在服务器基础结构下,单击Java和进程管理-进程定义。4. 在其他属性下,单击Java虚拟机。5. 选中配置Tab的详细垃圾回收选项。6. 在通用 JVM 参数字段中输入-agentlib:

9、pmiJvmtiProfiler。注:WebSphere6.1 中,JVM 概要分析接口改为 Java Virtual Machine Tool Interface(JVMTI)。之前版本是JVMPI。如果需要JVMPI的时候,也可 以此处输入-XrunpmiJvmpiProfiler。另外,启用JVMTI接口对性能影响较 大,尽量避免在生产环境中使用。7. 点击应用或者确定。8. 单击保存按钮。9. 重启WebSphere应用服务器。3.2 GC数据分析工具PMAT在WebSphere应用服务器的日志目录下,native_stderr.log文件就是我 们需要的内存回收分析文件。我们推荐使用

10、IBM Pattern Modeling and Analysis Tool for Java Garbage Collector X具,简称 PMAT。PMAT 工具解 析JAVA SDK的详细内存回收(GC)日志,并提供统计信息,图表,分析并推荐 Java堆配置。PMAT提供了丰富的图形界面来显示Java堆的使用状况,从而更 轻松地判断是否有内存问题发生。该工具可以从IBM的alphaWorks网站下 载,只有英文版。我们可以把GC文件从服务器上下载到PMAT所在机器,然后根据 WebSphere的平台选择打开相应的GC文件进行分析。下面是一个GC日志片 断,手动分析是比较费劲,而且需要深

11、入了解JVM相关知识。PMAT在分析GC日志后,给出一个总结。下图为例,我们可以看出GC对 系统性能的影响,以及完成的垃圾回收次数等,并且我们可以看出工具给出的 推荐(Recommendations)显示系统的Java堆使用情况是持续增加的。进一步,我们可以查看GC的详情,点击Analysis菜单,然后选择Graph View All,我们就可以根据需要选择所要查看的曲线。如图所示,红色曲线代 表已使用内存,蓝色曲线代表每次垃圾回收后可用的内存。已使用内存逐渐增 加,可用内存的持续降低表明系统可能存在内存泄漏。4. TPV监视JVM的状况另外一种方法是借助TPV和PMI来实时监视JVM,分析性

12、能曲线来判断是 否有内存泄漏的状况发生。WebSphere性能监控基础结构(PMI)和Java虚拟机 概要分析工具接口 (JVMTI)可以帮助我们收集系统的性能状况数据,使用 Tivoli性能查看器(TPV)以图形的方式显示这些数据(性能计数器),可以进一 步证实是否系统正在发生内存泄漏。4.1 PMI与TPV PMI提供WebSphere运行时和应用程序资源行为的一组全 面的数据,。例如,PMI提供数据库连接池大小、servlet响应时间、 Enterprise JavaBeans(EJB)方法响应时间、Java虚拟机(JVM)垃圾回收时间 以及CPU使用量等等。使用PMI数据,可以识别并修

13、正应用程序服务器中的性 能瓶颈,还可使用PMI数据来监控应用程序服务器的运行状况。PMI数据可以 由Tivoli Performance Viewer(TPV)、其他Tivoli工具、您自己的应用程序 或第三方工具来监控和分析。TPV是随WebSphere Application Server 一起 提供的PMI数据图形查看器。Tivoli Performance Viewer(TPV)使得我们可以通过查看图表或表格, 从而解读WebSphere的性能监控基础结构(PMI)数据。4.2 PMI的配置方法默认情况下,PMI 已经开启,级别是默认(Default)。配置步骤:1. 在控制台导航树中

14、单击监视&调整-性能监视基础结构(PMI)。2. 选择所要配置的服务器名字。3. 单击配置选项卡,这里可以根据监控内容的需要,来选择PMI的任一 种统计信息集(无,基本,扩展,全部,定制)。我们这里选择定制。注:如果在配置选项卡中,则当重新启动服务器时应用设置。如果在运 行时选项卡中,则立即应用设置。4. 点击定制-在定制监视级别的树中,选择配置选项卡,然后点开JVM运 行时,可以根据需要,启用或禁用相应的计数器。5. 保存并重启WebSphere服务器。4.3 TPV的使用方法实时查看TPV性能模块的步骤:(1) 在控制台导航树中,单击监控和调整-性能查看器-当前活动-服务器 名字)-性能模

15、块。(2) 选中要查看的每个性能模块,例如JVM运行时。(3) 单击查看模块按钮。在页面的右侧会显示所选性能数据的图形或切换 成表格。注:每个模块有与其关联的多个计数器。这些计数器会显示在数据图 形或表格下面的表中。您可以通过选择或取消选择计数器旁的复选框,将计数 器添加到图表或表中,或从中除去。TPV显示的已使用内存的图形理想情况下应该是锯齿状,图形中每个坡 (下降)对应着一次内存的垃圾回收(Garbage collection),如下图已使用内存 的曲线,显示的是没有发生内存泄漏的状况。如果测试过程中出现如下情况,则有可能发生了内存泄漏:-每次垃圾回收后的已使用内存的数值骤增。-TPV对应

16、的已使用内存图形更接近于阶梯(staircase),或者锯齿形状严 重不规则。-也可以查看分配的对象数与释放的对象数之差值,如果这个数值越来越 大,则有内存泄漏(如果需要查看对象数,需要启用JVMTI接口并在PMI中启 用相应的JVM计数器)。上图,红色曲线代表已使用的内存,从整体趋势,我们可以看出已使用 内存一直在增长。TPV可以帮助发现内存泄漏,为了得到最优结果,我们可以 重复试验,而且每次可以增加测试的时间,例如测试1000,3000或5000个页 面请求。5. 生成Heap dump文件WAS6.1中,在使用IBM JDK的平台上,可以直接使用以下的方法,随时 生成所需的heapdum

17、p文件。如果在性能诊断顾问程序配置里面选中了启用自 动堆转储收集,则可以自动在WebSphere profile所在的路径下(例如 /opt/IBM/WebSphere/WAS6.1/profiles/AppSrv01)生成 heapdump 文件,备用 户进行分析。在使用IBM SDK的平台上,例如AIX,Linux和Windows,在启用了性能诊 断顾问工具后,如果探测到有内存泄漏发生,WebSphere会自动生成两个 heapdump文件,供后续分析使用。我们在任何时候,可以随时手动生成所需的heap dump文件。在WAS6.1 profile的bin目录下,首先运行wsadmin脚本

18、客户端,然后可以调用 generateHeapDump 操作来完成。关键步骤:1. 找到JVM对象名字。set objectName WebSphere: type二JVM,process二,node二节点名字,*2. 对 JVM MBean 调用 generateHeapDump 操作。$AdminControl invoke$objectName generateHeapDump例如:rootcsspvm bin#pwd/opt/IBM/WebSphere/WAS6.1/profiles/AppSrv01/binrootcsspvm bin#./wsadmin.sh-username ro

19、ot-password demo4you WASX7209I: Connected to processserver1on node csspvmNode02 using SOAP connector; The type of process is: UnManagedProcess WASX8011W: AdminTask object is not available.WASX7029I: For help,enter: $Help helpwsadmin set objectName$AdminControl queryNames WebSphere: type=JVM,process=

20、server1,node=csspvmNode02,*WebSphere:name=JVM,process=server1,platform=proxy,node=csspvmNode02,j2eeType=JVM,J2EEServer=server1,version=6.1.0.0,type二JVM,mbeanIdentifier二JVM,cell=csspvmNode02C ell,spec=1.0 wsadmin$AdminControl invoke$objectName generateHeapDump/opt/IBM/WebSphere/WAS6.1/profiles/AppSrv

21、01/./heapdump.20190904 .075650.3576.phd wsadmin quit理想情况下,在探测到问题时,尽快生成一个初始的heap dump,然后密 切监控内存使用情况,等到泄漏了足够的内存的时候,再生成另外一个heap dump,这样可以对比分析以更准确地找到泄漏的原因。注:生成HeapDump文件的过程是比较耗资源的,所以请只在必须的时候 做这样的操作。6内存泄漏的分析诊断工具-MDD4J一旦确定了系统中有内存泄漏,并且为此生成了 heap dump。接下来,我 们可以把这些文件从WebSphere应用服务器转移到离线的分析工具所在的机 器,进行离线分析诊断。6

22、.1工具介绍MDD4J(Memory Dump Diagnostic for Java )是 -个内存泄漏分析工具, 用于对运行WebSphere Application Server的虚拟机(JVM)所生成的常用内存 转储(堆转储)格式进行分析。进行内存转储(Memory dump)分析的目的,是为 了确定Java堆中真正导致内存泄漏的类和包(classes and packages),这样 可以缩小内存泄漏的范围并找到真正的原因,此分析还确定应用程序Java堆 占用量的主要组成部分以及它们之间的拥有关系。此工具支持下列格式的内存转储格式有:-IBM 的 PHD 格式(heapdump.ph

23、d)-IBM 文本堆转储(heapdump.txt)-HPROF堆转储格式(hprof.txt,主要针对Solaris和HP-UX平台)-SVC 转储(dump.bin,IBM z-Series 上的 WebSphere)该工具提供了两种分析机制:单转储分析以及对两个转储进行的比较分 析。单转储分析最常用于在发生OutOfMemoryException时自动触发的内存转 储。此类分析查找可疑的数据结构,能够相对快速地提供可疑泄漏对象的分析 结果。比较分析用于对运行内存泄漏应用程序期间(即可用Java堆内存流失时) 获取的两个内存转储进行分析。在运行泄漏应用程序的早期触发的内存转储被 称为基线内

24、存转储,发生泄漏的应用程序运行一段时间(以允许泄漏程度加大) 后触发的内存转储被称为主内存转储。在发生了内存泄漏的情况下,主内存转 储可能包含大量对象,而这些对象占用的Java堆空间量会比基线内存转储大 很多。为了获得更好的分析结果,建议使主内存转储的触发点与基线内存转储 的触发点在时间上拉开一定距离,从而使总耗用堆大小在两个触发点之间大幅 增长。MDD4J的分析结果显示是基于WEB界面的,具有下列特征:-列示分析结果、堆内容、大小和增长幅度的总结-列示可疑的数据结构、数据类型和包,它们是造成堆使用量增加(对于 比较分析)和堆大小较大(对于单转储分析)的主要原因。-拥有关系上下文视图显示了占用

25、量主要组成部分之间的关系,以及一组 汇总的主要占用量组成部分所包含的重要数据类型。-在堆转储内容的交互式树形视图中,浏览功能能够显示堆中任何对象的 所有进入引用(在树中只显示一个引用,其余引用单独显示)和外出引用,而子 对象按到达大小排序。-导航功能使您能够从可疑对象列表转到所有关系上下文,以及从内容视 图转到浏览视图。-提供了内存转储中所有对象和数据类型的表视图,视图中具有过滤器和 经过排序的列。6.2工具的使用WebSphere应用服务器v6.1的附带光盘里面有IBM Support Assistant 工具的安装文件,运行相应的安装文件,MDD4J作为插件同时被安装了。另外,也可以从IB

26、M技术支持站点下载Support Assistant X具,然后 选择更新程序,独立安装MDD4J插件。启动步骤:(1) 程序-IBM Support Assitant-IBM Support Assistant v3(2) 在Support Assistant窗口中,选择工具-选择WebSphere版本号。点击MDD4J的链接,就可以开启MDD4J工具。在该界面中,我们可以提 交单个heap dump文件进行单转储分析,或同时提交两个文件进行比较分析。 也可以从内存转储分析结果的下拉选项中选择以前的分析结果,从而查看以前 的分析内容。查看分析进度单击上载并分析按钮后,MDD4J开始分析hea

27、p dump文件。在分析执行 过程中,登录页面将自动刷新,以反映当前正在执行的分析步骤以及整体分析 进度。如果该页面由于某种原因而不刷新,您可以单击刷新按钮以了解当前 分析状态。如果您希望停止分析,可以单击停止按钮,这将在当前正在执行 的模块完成后终止分析。在提交了 heap dump文件,MDD4J显示分析状态。查看分析结果分析完成后,Mdd4J页面将重定向到分析结果页面。分析结果页面包 含4个选项卡:分析总结选项卡:显示分析结果总结,并列示下一组用于查看分析结 果的步骤。可疑对象选项卡:它显示四类可疑对象,即对增长幅度影响最大的数 据结构、到达大小显著流失的数据结构、有大量实例的对象类型以

28、及有大量对 象实例的Java包。察看上下文和内容选项卡:显示主内存转储中Java堆占用量的主要组 成部分的拥有关系上下文图,以及图中所选节点的内容。浏览选项卡:根据对对象引用图执行的深度优先遍历,用树形视图显 示主内存转储的所有内容。其他内容,请参照MDD4J 工具附带的Help文档,该帮助文档有详细的使 用说明,在此不再赘述。7.小结IBM提供了一系列的工具辅助用户进行内存问题的监控和分析,在合适的 阶段选择合理的工具可以帮助我们轻松搞定内存泄漏。这里介绍的工具都是 WebSphere附带或者免费的,IBM Tivoli工具还提供了更强大的监控和诊断功 能,例如 ITCAM(IBM Tivoli Composite Application Management),可以根 据实际情况选用。特别声明:1 :资料来源于互联网,版权归属原作者2 :资料内容属于网络意见,与本账号立场无关3 :如有侵权,请告知,立艮即删除。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!