Loading

应用内存高问题排查

现象

【Firing】- 应用异常告警
1. 容器内存使用率特别高
应用名称: hrc-attend-report
产品: YonBIP公有云/人力云
用户: xxx
ID[环境]:online-hrc-attend-report[online]
报警信息: 容器[online-hrc-attend-report-75b5df5cf8-hkv9d]内存使用率高(当前96.33%), 请注意扩容
开始时间: 2021-09-24 11:55:14

排查方法

  • 查看java进程的参数配置是否合理

    1. 最大堆配置建议:Xmx = 容器内存*0.9 - 1G
    2. 容器外内存建议:1.5G至2G;
  • 如果应用配置了jvm监控, 可以查看heap, no heap, old, eden的使用情况。

    615023ed8c223

    615023f8b9ece

  • 如果应用没有配置jvm监控, 可以使用jmap命令查看内存情况

    1. 使用jps查看java 进程id

      61502ef963c80

    2. jmap -heap pid

      6150285a09f55

    3. jmap -histo:live pid

      6150288715c32

    4. jmap -histo pid | sort -k 2 -g -r 查看对象数最多的对象,按降序输出

      jmap -histo pid | sort -k 3 -g -r 查看内存的对象,按降序输出

  • dump内存与分析

    1. dump java内存

      wget http://172.20.45.10:10000/package/jcmd.bash && chmod +x jcmd.bash
      ./jcmd.bash -s 名称 -t Heap -f $PID  -m T
      

      61503033d3a8f

    2. 本地使用MAT工具打开hprof文件

      MAT工具下载地址 https://www.eclipse.org/mat/downloads.php

    3. 查看占用堆空间比较大的对象

      使用mat工具打开heapdump

      616d0799c97e6

      选择leak suspects report, 点击finish

      616d08a88777e

      点击domanitor tree

      616d089e941c3

      再一步一步找到问题根源

      61502c11ba658

posted @ 2022-03-13 18:07  Charming-Boy  阅读(227)  评论(0编辑  收藏  举报