性能问答>docker rss内存缓慢增长,最终导致tomcat被系统oom killer>
30回复
4年前

docker rss内存缓慢增长,最终导致tomcat被系统oom killer



问题描述

在运行中观察到运行再docker中的容器,rss缓慢增长,最终会导致oom killer。再扩容到4C 8G的时候,同样会有该问题。

JVM堆内存没有超出使用,正常。代码中也没有对堆外内存的直接操作。

JVM内存堆

image.png

内存RSS

image.png
(后面会逐渐逼近,从而导致机器rss使用完毕)

排查下来,发现内存的增长主要在这些虚拟内存对应的rss处增长
image.png
注:加起来为65536,这些对应的rss在缓慢增长,每次增加几MB,最终导致整个rss耗尽

希望各位帮忙看看,这些地址对应的东西是什么,为什么会导致docker的rss使用完毕。整个java进程使用的rss在缓慢增长,堆的大小正常,和NMT的对的上,但是整个堆外就不对了。还是能够帮忙解释一下。

有注意到JDK的bug(compiler引起的rss增长),但是那是实际的rss增长为64m的,我这个实际增长没有那么多。

希望各位能够提供一个排查的思路,感谢

环境说明

系统参数

机器配置:2C 4G
JDK版本:1.8.0_201
OS版本: Linux 4.14.67-2dev917.el7.x86_64/amd64 Centos
glibc版本:ldd (GNU libc) 2.17

JVM启动关键参数

-Xmx3296m -Xms1977m -Xss256k XX:CICompilerCount=2 -XX:ParallelGCThreads=2
垃圾收集器为:G1

说明

线程数正常,维持在一个固定值。

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