性能问答>Java程序内存猛涨,找不到原因>
3回复

Java程序内存猛涨,找不到原因



先抱歉,这个问题能提供的线索很少。
目前线上跑着的一个Java服务,使用Java 8 u192,运行在k8s中。隔一段时间就会被K8s OOM Kill导致重启。今天运维告知内存突然猛涨,系统告警。看了下监控(只有k8s pod级别的监控,没有对JVM级别的监控),确实在一个时间点内存占用垂直上升了1个G左右,伴随cpu使用率涨了20%左右。
这个问题由来已久。之前能在容器内部dump,通过MAT等工具基本排除堆内存猛涨的可能性。线上环境,没法用NMT详细查看。
后来运维换了一次基础镜像,jmap等工具也用不了了。
今天用pmap看了下,基于rss排序,有一个anon的块占到了近3G,不知道是否和这个有关:
B84F72466B444674BB627AF269BCD17E.png

启动参数
java -Xmx2936m -Xms1000m -XX:CompressedClassSpaceSize=250m -XX:MetaspaceSize=250m -XX:MaxMetaspaceSize=1000m -XX:YoungGenerationSizeIncrement=30 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+UseCGroupMemoryLimitForHeap -Djava.security.egd=file:/dev/./urandom xxx.jar

在之前的工作中也遇到过类似情况,通过NMT和一些监控指标的收集,可以排除堆内存,直接内存占用高的问题,就是不清楚某一个占用特别高的块是做什么的。求问遇到这种情况有什么思路?有可能是什么问题?

1000 阅读
请先登录,查看3条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步