求助>docker rss内存缓慢增长,最终导致tomcat被系统oom killer>
28回复
1年前

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

说明

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

4556 阅读
请先登录,再评论

回复列表

我也遇到同样的问题,堆内存一直居高不下,不会触发GC

我们也遇见这个问题 也没有解决

Hey Shaw1年前

楼主最后有解决吗,我们也遇到相同的情况。

HelloJVM61年前
回复 墨书:

image.png

红色的是行号,蓝色的是线程ID,我是用grep抓出来的

回复
墨书1年前
回复 HelloJVM6:

输出不应该是这样的吗

[pid 30253] 12:46:45.306541 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f27b45c0000 <0.000054>

你这输出,时间戳前面的部分代表什么意思

回复
HelloJVM61年前
回复 墨书:

-T -tt -f -e trace=all
我就grep了所有的mmap出来

回复
查看更多