【问题标题】:JAVA 10+ -XX:MaxRAMPercentage flag in Kubernetes containerJAVA 10+ -XX:MaxRAMPercentage 标志在 Kubernetes 容器中
【发布时间】:2021-03-17 21:57:40
【问题描述】:

Java 10 introduced 对应的-XX:{Initial|Min|Max}RAMPercentage 标志用于在容器环境中配置堆。

我在 k8s 集群中运行 Elasticsearch。 Elaticsearch 容器有以下资源配置:

resources:
  limits:
    memory: 512Mi
  requests:
    memory: 256Mi

问题:如果我将 -XX:MaxRAMPercentage 设置为 50%,那么值是多少?

  • 128Mi:请求内存的 50%?
  • 256Mi:上限的 50%?
  • 128Mi-256Mi 范围内的变量:实时内存的 50%?

【问题讨论】:

标签: java elasticsearch kubernetes jvm heap-memory


【解决方案1】:

在容器中,MaxRAMPercentage 是根据 cgroup memory.limit_in_bytes 的值计算的。

影响 cgroup 内存限制的是 limits Kubernetes 配置。因此,在您的情况下,最大堆大小将设置为 256M(限制的 50%)。

【讨论】:

  • 在pod调度过程中,容器只会占用请求的内存量,之后会根据负载增加。那么一开始,所有请求的内存(即256Mi)都会被视为堆?
  • @KamolHasan 是的
  • 不是没有-XX:+UseContainerSupport ibm.com/support/knowledgecenter/en/SSYKE2_8.0.0/openj9/…
  • -XX:+UseContainerSupport不是默认开启的吗?
猜你喜欢
  • 2023-01-17
  • 2020-06-02
  • 2019-07-21
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多