【发布时间】:2021-11-18 02:05:25
【问题描述】:
TLDR;
为什么要在 kubernetes 应用程序中设置 -Xmx 和 -Xms?
我们继承了一个出现内存不足错误的 Kubernetes 应用。看起来最初的开发人员设置了 kubernetes 资源限制(0.95 CPU 内核和 4Gb 内存),如下所示。但是,他们还将JAVA_OPTS -Xmx 中的最大堆大小设置为 800mb。
我找到了很多关于-Xmx 最佳设置的好材料(例如this one),但找不到以下问题的直接答案:我们真的需要设置-Xmx(以及更少重要的是,-Xms) 在 kubernetes 容器中?我们已经对容器设置了硬性限制
resources,那么设置这些标志有什么意义呢?如果我们完全删除它们,后果会是什么?应用 GC 会更频繁吗?它会动态缩放堆大小还是将最大堆大小固定为某个默认最大值,例如 256MB?有没有根据 kubernets 容器的比例设置 -Xmx 的经验法则?
【问题讨论】:
标签: java kubernetes heap-memory