最近生产环境机器突然频繁报JVM FULL GC,平均每分钟几次到十几次,对于我一个Java菜鸟来说,排查这个问题简直就是难于登天,没办法,只能查资料一步一步排查。
第一步:先看下CPU和内存使用率,执行top命令,发现CPU和内存使用率并不高

第二步:既然CPU和内存使用率不高,那么我猜测应该是最近一次发布引起的,发布的功能是另一个应用消费kafka消息,然后通过这个应用写数据,应该是消费写入太频繁导致的,当然这只是猜测。。。最终排除了这个原因。
执行命令:ps aux | grep java 找到应用进程
在执行:jstat -gcutil 1 1000

继续执行:jmap -F -dump:format=b,file=heapDump 1
dump文件下载下来用mat分析也没发现什么问题。

问题还没找到,继续排查
第三步:用jmap分析
执行:jmap -heap 1
最后发现应该是Eden Space分配太小导致,原来只有4MB,但是同集群的jvm配置应该一样,为啥只有这一个应用会频繁报full gc的错误。。。

最后把问题反馈给运维部门,他们调整了jvm参数问题解决了。
转载请注明:扩产网 » JVM FULL GC 问题怎么排查?