美文网首页
系统频繁Full gc的排查方式

系统频繁Full gc的排查方式

作者: 云飞的内容小站 | 来源:发表于2024-08-22 13:53 被阅读0次

系统运行时,遇到服务器cpu占满的情况,查看gc日志,发现系统在频繁做 Full gc,tomcat 占用大量内存,回收不了,通过如下方式进行排查:

0. 首先我们要在Tomcat 正在进行 full gc 时能收到异常通知,然后用 ps 命令找到当前 tomcat 所在的进程号,如 ps -ef | grep leon-tomcat ,后面假设进程号为 XXX

1.  jmap -dump:live,format=b,file=dump.hprof XXXX 此命令可以把当前 tomcat 所占用的内存全部 dump 到二进制文件中,以备后面的分析使用。

2. 下载我们即将使用的关键软件,直接官网下载,下面是写此文时的最新版本,读者可以使用最新版。

3. `wget http://ftp.jaist.ac.jp/pub/eclipse/mat/1.15.0/rcp/MemoryAnalyzer-1.15.0.20231206-linux.gtk.x86_64.zip`

    3.1下载完之后需要解压,linux 可以使用 unzip 命令,很方便。

    3.2,一般jmap 出来的文件非常大,可以修改配置参数,按需要修改使用内存大小

     -startup

        plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar

        --launcher.library plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505

        -vmargs

        -Xms16g

        -Xmx16g

    -vm # 指定 jdk ,最新版的工具,需要 jdk 17 及以上,这里使用的是jdk22版本

        C:\Program Files\Java\jdk-22.0.2\bin\java.exe

4. `./ParseHeapDump.sh ../dump.hprof org.eclipse.mat.api:suspects`

    1. 还可以使用另外两个 参数

    2. org.eclipse.mat.api:overview

    3. org.eclipse.mat.api:top_components

5. 最后,命令执行的结果里面,会有一个压缩文件,down 下来,就可以分析问题原因了


如果以上linux 环境不能分析,或者对于linux 环境不熟悉,可以吧 dump.hprof 下载到本地,使用windows 版本的mat 工具进行分析

相关文章

网友评论

      本文标题:系统频繁Full gc的排查方式

      本文链接:https://www.haomeiwen.com/subject/qsgikjtx.html