JAVA应用,内存超出后没有进行OOMKILL

JAVA应用,内存超出后没有进行OOMKILL

作者万绍远
团队Filed&&Suppoort
编写时间2020/10/28
类型应用部署常见问题

问题现象

java应用上容器云后没有配置JVM MaxRAM,发现实际内存使用量早已超过配置的Limit限制制,但Kubernetes并没有oomkill掉这个应用

问题原因

首先Docker容器本质是是宿主机上的一个进程,与宿主机共享/proc目录,在容器内看到的/proc/meminfo,/proc/cpuinfo 与直接在宿主机上看到的一致,默认JVM的Max Heap Size是系统内存的1/4,这就导致此原因。

问题解决

新的Java版本(10及以上版本)已经内置了docker支持功能够读取到Kubernetes中配置的limit配置。对于旧版本jdk8的使用8u212或更新的版本即可。

最后由 袁振更新 于