养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

weblogic节点内存溢出检测及处理方式

时间:2024-10-22 08:05:23

Java内存溢出是指:JAVA虚拟机分配出去的内存不能通过GC回收(垃圾回收),再也无法分配内存,导致程序无法正常运行的情况;(再详细可以百度了解);这里主要说的是堆内存溢出(程序运行导致)

工具/原料

eclipse

MemoryAnalyzer

方法/步骤

1、weblogic节点内存溢出的现象就是系统运行变的缓慢,同时在后台应用日志中出现Java.lang.OutOfMemoryError:PermGenspace

2、在服务器上使用top命令,可以看到对应的java进程CPU使用率非常高(1000%颍骈城茇-4000%,CPU使用率高是JVM使用很多GC线程想要努力回收内存导致,也不是唯一监测指标,不过比较容易看);

3、1.捂执涡扔使用jstat-gcutil$PID1000100命令监测2中发现的异常进程(jstat命令只要装了JDK,设置了环境变量就可使用,-gcutil指定监控GC情况,$PID告诉命鸡舍诽浓令需要监控的程序进程ID,1000代表1000ms显示一条,100代表监控100次;也就是每秒显示对应PID的GC情况,显示100);使用后会看到以下输出(正常情况的输出):

weblogic节点内存溢出检测及处理方式

4、下面是内存溢出需要关注的列:正常情况下,年轻代会不断增加,到100%后通过增加一次年轻代GC次数或者一次FULLGC次数而下降很多。

weblogic节点内存溢出检测及处理方式

5、下面是内存溢出的情况下jstat的输出:年轻代保持100%左右的满负荷使用率无法回收,年老代也维持在很高的水平,即使FULLGC次数从32增加到33次,年轻代依然很快就恢复到100%;

weblogic节点内存溢出检测及处理方式

6、下面附上一个正常的jstat输出,和一个内存溢出情况下的jstat输出

weblogic节点内存溢出检测及处理方式

weblogic节点内存溢出检测及处理方式

7、通过2过程过滤出有异常的server,然后通过3确邈赕瑟遂定是否内存溢出。确定是内存溢出之后,我们需要或者溢出程序的内存堆dmp(一个dmp文件),方便器皆阄诟分析出溢出点(哪段代码导致的溢出)a)jmap-dump:format=b,file=$filename$pid($filename代表导出的文件名,$pid代表进程ID),这个命令经常不成功,需要多执行几次。正常情况下会有如下输出:

weblogic节点内存溢出检测及处理方式

8、获得DMP之后可以用多种工具分析,我们这里使用eclipse的MemoryAnalyzer插件分析;

9、打开eclipse,使用open->openfile打开生成的dmp文件

weblogic节点内存溢出检测及处理方式

10、MemoryAnalyzer插件会询问需要那种报告,选择LeakSuspectsReport

weblogic节点内存溢出检测及处理方式

11、Eclipse将会自动在存放dmp目录下自咿蛙匆盗动生成$pid_Leak_Suspects.zip。打开zip文件中的index.html。即可开始分析,会分析出dmp文件保存的线程金赇忍浆内存使用率,如下图,我们可分析到4.4G被占用而没有释放,只剩710.8M,我们接着点击detail就可以查看到哪个代码是泄露点,并把相应报告反馈给开发。

weblogic节点内存溢出检测及处理方式

12、找到问题所在后,临时解决方案是将溢出的java进程重启即可,即kill-3对应进程号

© 一点知识