gpt4 book ai didi

java - 我们是否应该在 kubernetes 容器中设置 -Xmx(最大 Java 堆大小)

转载 作者:行者123 更新时间:2023-12-04 14:49:18 25 4
gpt4 key购买 nike

TLDR;
为什么要麻烦设置-Xmx-Xms在 kubernetes 应用程序中?

我们继承了一个存在内存不足错误的 kubernetes 应用程序。看起来初始开发人员设置了 kubernetes 资源限制(.95 CPU 内核和 4Gb 内存),如下所示。但是,他们还在 JAVA_OPTS -Xmx 中设置了最大堆大小。到 800mb。
enter image description here
我在 -Xmx 的最佳设置上找到了很多好 Material (例如 this one ),但找不到以下问题的直接答案:我们真的需要设置 -Xmx (不太重要的是, -Xms )在 kubernetes 容器中?我们已经对容器设置了硬限制resources ,那么设置这些标志有什么意义呢?如果我们将它们完全删除,结果会是什么?应用程序 GC 会更频繁吗?它会动态缩放堆大小还是将堆大小最大值固定在某个默认最大值(如 256MB)?是否有任何设置的经验法则-Xmx与 kubernets 容器成比例?

最佳答案

如果您没有设置最大堆大小,则行为取决于所使用的 Java 版本。当前的 JRE 支持确定容器限制并使用它来指导其内部启发式方法。
当使用旧版本运行时,用于堆的内存将根据容器可见的物理内存确定,这可能会过多。
请注意,达到容器的内存限制将导致终止进程并重新启动容器。
我建议您为 Xmx 和 Xms 使用从操作测试中确定的合理值以获得稳定的内存使用。

关于java - 我们是否应该在 kubernetes 容器中设置 -Xmx(最大 Java 堆大小),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69320925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com