首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践

2012-10-08 
WebSphere应用服务器内存泄漏探测与诊断工具选择最佳实践自:http://blog.chinaunix.net/u1/57765/showart_

WebSphere应用服务器内存泄漏探测与诊断工具选择最佳实践

自:http://blog.chinaunix.net/u1/57765/showart_450998.html

?

本文介绍了如何在WebSphere应用服务器中实现应用程序内存泄漏的探测,并且针对IBM所提供的系列分析与诊断工具,给出了具体的配置步骤和使用最佳实践。

<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->

(1) 首先,在WebSphere中我们启用实时探测内存泄漏工具, WebSphere性能诊断顾问会对内存泄漏提前发出警告信息。

(2) 启用WebSphere自带的Tivoli性能查看器监视系统的JVM使用状况,确定内存泄漏是否正在发生。

(3) 根据需要,生成详细内存回收日志,使用PMAT工具分析并确定泄漏的时间,周期等。

(4) 生成单个或者多个Heapdump文件,选用MDD4J进行分析诊断,找到内存泄漏的真正原因。

(5) 提交开发部门进行代码修复,然后重新部署到WebSphere应用服务器。

接下来的部分,我们针对每个环节的配置和工具使用进行阐述。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
回页首

(5)在其他属性区域,点击性能和诊断建议配置,确保内存泄漏规则处于运行状态(绿色箭头)。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践



WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
回页首

7.点击应用或者确定。

8. 单击保存按钮。

9.重启WebSphere应用服务器。

PMAT在分析GC日志后,给出一个总结。下图为例,我们可以看出GC对系统性能的影响,以及完成的垃圾回收次数等,并且我们可以看出工具给出的推荐(Recommendations)显示系统的Java堆使用情况是持续增加的。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践

进一步,我们可以查看GC的详情,点击Analysis菜单,然后选择Graph View All,我们就可以根据需要选择所要查看的曲线。如图所示,红色曲线代表已使用内存,蓝色曲线代表每次垃圾回收后可用的内存。已使用内存逐渐增加,可用内存的持续降低表明系统可能存在内存泄漏。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
回页首

5.保存并重启WebSphere服务器。

如果测试过程中出现如下情况,则有可能发生了内存泄漏:

-每次垃圾回收后的已使用内存的数值骤增。

-TPV对应的已使用内存图形更接近于阶梯(staircase),或者锯齿形状严重不规则。

-也可以查看分配的对象数与释放的对象数之差值,如果这个数值越来越大,则有内存泄漏(如果需要查看对象数,需要启用JVMTI接口并在PMI中启用相应的JVM计数器)。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践

上图,红色曲线代表已使用的内存,从整体趋势,我们可以看出已使用内存一直在增长。 TPV可以帮助发现内存泄漏,为了得到最优结果,我们可以重复试验,而且每次可以增加测试的时间,例如测试1000,3000或5000个页面请求。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
回页首

理想情况下,在探测到问题时,尽快生成一个初始的heap dump,然后密切监控内存使用情况,等到泄漏了足够的内存的时候,再生成另外一个heap dump,这样可以对比分析以更准确地找到泄漏的原因。

注: 生成HeapDump文件的过程是比较耗资源的,所以请只在必须的时候做这样的操作。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
回页首

点击MDD4J的链接,就可以开启MDD4J工具。在该界面中,我们可以提交单个heap dump文件进行单转储分析,或同时提交两个文件进行比较分析。也可以从内存转储分析结果的下拉选项中选择以前的分析结果,从而查看以前的分析内容。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践

查看分析进度

单击"上载并分析"按钮后,MDD4J开始分析heap dump文件。在分析执行过程中,登录页面将自动刷新,以反映当前正在执行的分析步骤以及整体分析进度。如果该页面由于某种原因而不刷新,您可以单击"刷新"按钮以了解当前分析状态。如果您希望停止分析,可以单击"停止"按钮,这将在当前正在执行的模块完成后终止分析。

在提交了heap dump文件,MDD4J显示分析状态。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践

查看分析结果

分析完成后,Mdd4J页面将重定向到"分析结果"页面。"分析结果"页面包含 4 个选项卡:

"分析总结"选项卡:显示分析结果总结,并列示下一组用于查看分析结果的步骤。

"可疑对象"选项卡:它显示四类可疑对象,即对增长幅度影响最大的数据结构、到达大小显著流失的数据结构、有大量实例的对象类型以及有大量对象实例的 Java 包。

"察看上下文和内容"选项卡:显示主内存转储中 Java 堆占用量的主要组成部分的拥有关系上下文图,以及图中所选节点的内容。

"浏览"选项卡:根据对对象引用图执行的深度优先遍历,用树形视图显示主内存转储的所有内容。

其他内容,请参照MDD4J工具附带的Help文档,该帮助文档有详细的使用说明,在此不再赘述。


WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
WebSphere应用服务器内存泄漏探测与确诊工具选择最佳实践
回页首

7.小结

IBM提供了一系列的工具辅助用户进行内存问题的监控和分析,在合适的阶段选择合理的工具可以帮助我们轻松搞定内存泄漏。这里介绍的工具都是 WebSphere附带或者免费的,IBM Tivoli工具还提供了更强大的监控和诊断功能,例如ITCAM (IBM Tivoli Composite Application Management),可以根据实际情况选用。


参考资料

    WebSphere Application Server V6.1: Version 6.1 中的新特性 WAS6.1 信息中心 WebSphere Application Server Java Dumps WebSphere Application Server 中的内存泄漏检测与分析: 第 1 部分:内存泄漏概述 IBM Pattern Modeling and Analysis Tool for Java Garbage Collector




本文转载于IBM官方网站:
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0609_xuechao/index.html

热点排行