# 官方提供@yunTaoScripts 容器JVM内存高排查思路 🔥🔥
👉🏻 Java性能问题定位参考链接 (opens new window)
# 故障一、频繁FullGC的排查方法:
- 发生FGC有可能是内存分配不合理,比如Eden区太小,导致对象频繁进入老年代,这时候通过启动参数配置就能看出来,
- 另外有可能就是存在内存泄露,可以通过以下的步骤进行排查:
jstat -gcutil 1 1000
或者 查看gc.log日志,查看内存回收情况。- 容器运维中心>数据分析>指标浏览查看 jvm 波动趋势。大致确认下内存走势,如果呈现高低震荡,而不是高位波动,大概率jvm没什么问题。如果内存呈现 明显向上趋势,则继续排查。
- 通过jmap命令
jmap -dump:format=b,file=dumpfile pid
,导出之后再通过Eclipse Memory Analyzer等工具进行分析,定位到代码,检查是否存在内存溢出问题。
# 故障二、CPU飙高,同时FGC的排查方法:
- 找到当前进程的pid,
top -p pid -H
查看资源占用,找到线程 printf “%x\n” pid
,把线程pid转为16进制,比如0x32djstack pid|grep -A 10 0x32d
查看线程的堆栈日志,还找不到问题继续dump
出内存文件用MAT等工具进行分析,定位到代码,修复
← 快速链接