如何解决JAVA进程内存占用超过容器自身的资源限制,导致容器重启的问题?

故障前,java进程占3.9g左右,基于以上问题描述,我们想了解:1. java 进程的内存占用和 JVM xmx 配置的大小是否有确定的比例关系;2.是否可通过某种配置手段限制 java 进程的内存占用;3.针对 container 部署的场景,container 内存资源限额与 JVM 堆内存大小有没有配置比例的最佳实...显示全部

故障前,java进程占3.9g左右,基于以上问题描述,我们想了解:
1. java 进程的内存占用和 JVM xmx 配置的大小是否有确定的比例关系;
2.是否可通过某种配置手段限制 java 进程的内存占用;
3.针对 container 部署的场景,container 内存资源限额与 JVM 堆内存大小有没有配置比例的最佳实践。
环境信息如下:
K8S版本:1.14.6
DOCKER版本:18.9.6
container资源限额:内存4096Mi,CPU2000m
DOCKER内操作系统版本:CentOS linux release 7.4.1708(Core)
JDK版本:ZULU 8.33.0.1-jdk8.0.192-linux_x64
jvm参数:-Xms3072m -Xmx3072m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Xloggc:/tomcat/apache-tomcat-8.5.40/gclogs/gc.log.$(date -u +%Y-%m-%d-%H-%M) -verbose:gc -XX:+PrintGCDateStamps
JVM GC log 在 oom kill 前未见异常。

收起
参与8

查看其它 2 个回答nameless的回答

namelessnameless技术总监某云计算厂商

1、没有确定比例,一般根据业务需求定;
2、没有
3、可以设置2倍

综上几个问题,建议对业务进行下压测,可以看下是哪些线程或进程没有及时释放,看是否有内存泄漏。

软件开发 · 2020-06-22
浏览2789

回答者

nameless
技术总监某云计算厂商
擅长领域: 云计算容器容器云

nameless 最近回答过的问题

回答状态

  • 发布时间:2020-06-22
  • 关注会员:4 人
  • 回答浏览:2789
  • X社区推广