应用内存高问题排查
现象
【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进程的参数配置是否合理
- 最大堆配置建议:Xmx = 容器内存*0.9 - 1G
- 容器外内存建议:1.5G至2G;
-
如果应用配置了jvm监控, 可以查看heap, no heap, old, eden的使用情况。
-
如果应用没有配置jvm监控, 可以使用jmap命令查看内存情况
-
使用jps查看java 进程id
-
jmap -heap pid
-
jmap -histo:live pid
-
jmap -histo pid | sort -k 2 -g -r 查看对象数最多的对象,按降序输出
jmap -histo pid | sort -k 3 -g -r 查看内存的对象,按降序输出
-
-
dump内存与分析
-
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
-
本地使用MAT工具打开hprof文件
-
查看占用堆空间比较大的对象
使用mat工具打开heapdump
选择leak suspects report, 点击finish
点击domanitor tree
再一步一步找到问题根源
-