websphere内存溢出处理常用方法带截图

上传人:ji****72 文档编号:37555429 上传时间:2018-04-18 格式:DOC 页数:7 大小:616.50KB
返回 下载 相关 举报
websphere内存溢出处理常用方法带截图_第1页
第1页 / 共7页
websphere内存溢出处理常用方法带截图_第2页
第2页 / 共7页
websphere内存溢出处理常用方法带截图_第3页
第3页 / 共7页
websphere内存溢出处理常用方法带截图_第4页
第4页 / 共7页
websphere内存溢出处理常用方法带截图_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《websphere内存溢出处理常用方法带截图》由会员分享,可在线阅读,更多相关《websphere内存溢出处理常用方法带截图(7页珍藏版)》请在金锄头文库上搜索。

1、WebSphere 内存溢出处理内存溢出处理1. jvm 大小调整到 768-1.5g,不要超出 1536(MB) 。对于 32 位 JDK 如果初始值超过 2048(即 2GB 的 JVM 堆大小) ,将导致 JVM 初始化失败,websphere服务器无法启动。经验:如果使用超过 1.5GB 的 JVM 大小,就有可能出现古怪的内存分配失败问题。 (websphere6.1 使用 IBM JDK 5.0,针对大对象的内存分配做了处理。 )注意:调整 JVM 堆大小是最后应该考虑的手段,因为增大 JVM 同时也会增加垃圾回收的系统暂停时间。2. IBM JDK 5.0 有 4 种垃圾回收机制

2、可针对不同问题使用。命令:-Xgcpolicy:Optthruput 默认的回收策略,不使用并发标记。如果用户没有因为内存回收时系统暂停时间过长问题,可以保持这个默认的参数。Optavgpause 如果内存回收时导致系统暂停时间过长,建议使用这个策略。它可以缩短系统内存回收时的被暂停时间。GenconGencon 是一种将并发标记和传统的垃圾回收机制综合使用的策略,用于将内存回收时的暂停时间最小化。SubpoolSubpool 不使用并发标记,但是,使用一种改进的内存分配算法用来获得更好的性能。后两种在电子商务应用中可提升 30%60%的吞吐量。3. 打开垃圾回收详细信息功能。可以在控制台中设

3、置,设置后需要重新启动 websphere 才能生效。开启这个功能后会生成进程日志(vnative_stdout.log 或者vnative_stderr.log)包含垃圾处理过程的信息。这项功能默认是不启用的。可以使用相应的工具分析这些文件来分析垃圾回收的情况。勾选这项重启,就可以了。垃圾回收分析工具 PMATPMAT(gaga)支持多种 JDK 版本的分析。启动 java -Duser.language=cn -Duser.country=CN -jar ga29.jar不同的系统产生的日志采用不同参数,默认的是 IBM 的。点击导入 vnative_stderr.log 文件。(used

4、(after)就是 GC 完成后占用内存大小的变化曲线)AFAF(Allocation Failure)内存分配失败内存泄露内存泄露(Memory Leak)由于应用程序的非正常的申请越来越多的内存对象导致最终所有的内存空间被用完。内存碎片内存碎片(Memory Fragmentation)即虽然所有的空闲的内存空间的总和大于所需申请的内存,但是,由于这些内存不是连续的(由于某些内存无法移动)而无法分配。内存碎片问题多数是由于固定对象和大对象问题引起的。分析方向:(两个图表分析方向:(两个图表 两次分配失败的间隔时间(两次分配失败的间隔时间(TimeTime sincesince lastla

5、st AFAF)和和 GCGC 完成时间(完成时间(CompleteComplete timetime) )如果 GC 的频率很高(不论 GC 的完成时间是否正常) ,则很可能是真正的内存碎片问题。可以尝试调大 JVM 堆大小。GC 的每次执行时间应该小于 10S。如果大于这个值说明垃圾回收器要花很长一段时间去清理大空间堆里的对象。这一般说明 JVM 堆的最大值过大,应该调小。“GC 的周期和分布”可以用来分析 GC 的开销是否过大;“GC 后的空闲内存空间”可以用来发现内存泄露;“GC 前的空闲内存空间”和“引起 AF 请求的大小”可以发现碎片过多和大对象问题,等等。碎片问题碎片问题(AF

6、发生前的总空闲内存大小和导致 AF 的内存请求大小图表)正常情况下,AF 发生前的总空闲内存大小应该比较小,或至少小于导致 AF 的内存请求大小。正常情况下,这个曲线应该贴近水平坐标轴,即 AF 发生前剩余空间应该接近零。反之,就很可能出现了内存碎片问题。内存碎片问题解决内存碎片问题解决(大部分是由于固定对象问题(pinned object)和大对象问题) ,固定对象问题可以通过设置“-Xk”和“-Xp”通用 JVM参数来解决。在通用 JVM 参数中设置参数“-verbosegc Dibm.dg.trc.print=st_verify” ,重新启动 websphere 就可以在日志中看到相应的

7、“pinned=nnnn”等信息。序号序号参数参数含义含义单位单位1Since从上次 AF 到现在的时间millisecond2Freed这次 GC 释放的空间byte3Needed/Requested这次 AF 的请求空间byte4Free这次 GC 后总的空闲空间byte5TotalGC 后的 Java 堆大小byte6Completed完成 AF 的时间millisecond7GC Completed or GC完成 GC 消耗的时间millisecond8Overhead完成 AF 的时间%9Mark标记状态消耗的时间millisecond10Sweep打扫状态消耗的时间millise

8、cond11Compact压缩耗时millisecond12Exhausted是否没有足够的空间分配使失败4. 两种情况会导致 java.lang.OutOfMemoryError exceptionThe Java Virtual Machine (JVM) might run out of contiguous Java heap space to allocate a Java object.The JVM might not be able to allocate native memory.5. 分析系统的堆镜像(heapdump)文件系统有可能自动产生,但是建议在系统运行过程中手工

9、产生 heapdump 文件。下面介绍两种手工产生 heapdump 文件的方法。对于 IBM JDK,可以使用 IBM HeapDump,这是 IBM 自带的工具。为了使用这个工具,需要在 websphere 管理控制台中添加 JVM 的如下定制属性:IBM_HEAPDUMP=TRUEIBM_HEAP_DUMP=TRUEIBM_HEAPDUMPDIR=IBM_HEAPDUMP_OUTOFMEMORY=TRUEIBM_JAVADUMP_OUTOFMEMORY=TRUEIBM_JAVA_HEAPDUMP_TEXT=TRUE如果没有设置 IBM_HEAPDUMPDIR,默认的输出路径就是应用服务器

10、的根目录。保存修改后重新启动应用服务器。在 unix 平台需要获取应用服务器进程的进程 PID,Unix 下需要获得 heapdump 文件的时候,在命令行输入“kill -3 ”命令。该命令会在指定的目录下产生“heapdump”和“javacore”文件。一般来说需要产生多次 heapdump 文件来对比分析。Windows 下,没有 kill 命令,需要通过 webshpere 应用服务器的命令行控制台进行。如下例:profilesserver1binwsadmin.batwsadminset jvm $AdminControl completeObjectName type=JVM,process=server1,*wsadmin$AdminControl invoke $jvm dumpThreads可以使用分析工具有 Heap Analyzer 和 MDD4J(分析 heapdump) 。6. Heap Analyzer 使用分析 javacore 文件使用命令行:java Xmx1300m -jar ha26.jar打开载入界面可以查看是否有死锁7.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号