性能问答>【已结算】jvm堆内堆外都正常,但是k8s Pod占用内存一直缓慢增长>
42回复
1年前

【已结算】jvm堆内堆外都正常,但是k8s Pod占用内存一直缓慢增长



1.问题描述:

通过grafana和arthas工具发现,服务jvm堆内(ps eden space,ps survivor space,ps old gen)占用和堆外(code cache,metaspace,compressed class space,direct,mapped)占用都正常,但是k8s Pod占用内存一直缓慢增长,知道达到limit, 服务被kill,然后重启该服务。

2.环境说明:

jvm:-Xms512m -Xmx512m
k8s: limit是1024m
jdk: 1.8

3.尝试过的解决办法

3.1怀疑是k8s缓存内存占用导致

排查资料得到可能是cache导致,故咨询运维 buffer cache = wss - rss, 通过grafana 检测发现wss rss基本保持,相差不大

3.2怀疑是jvm GC后没有归还内存给操作系统

线上是java8 默认是 -XX:+UseParallelGC = Parallel Scavenge + Parallel Old
但是xms 和 xmx 是同一个值,不存在申请和释放的问题,而且通过观察发现和Pod内存占用高关系不大

3.3怀疑是缺少jvm参数XX:MaxDirectMemorySize

通过监控观察,加了参数还是 进程内存还是缓慢增长

3.4按照网上排查堆外内存泄漏的方式排查

https://zhuanlan.zhihu.com/p/60976273
但是没有大量的64M内存占用,而且代码没有涉及到的Zip相关操作

4.提问

有什么解决办法或者解决思路嘛

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