我在kubernates pod中有以下资源限制。当我的映像以jvm参数开始时。我们添加了小于最小/最大堆的资源限制。java进程开始运行一段时间,pod突然因内存不足而被杀死。
如果资源限制中指定的内存是3倍的值,pod如何启动?有人能帮上忙吗?
cmd:
java -Xmx1512m -Xms1512m $LOGARGS -jar test-ms.jar
Pod资源限制:
resources:
limits:
cpu: 300m
memory: 500Mi
requests:
cpu: 150m
memory: 300Mi
/start.sh: line 19: 7 Killed java -Xmx1512m -Xms1512m $LOGARGS -jar test-ms.jar
1条答案
按热度按时间lx0bsm1f1#
在500Mi你的但是被驱逐。如果Java需要1500,这不能工作。在限制部分提高内存值,玩这个值。你的容器不仅仅需要Java的内存。
更新您的评论:
意味着当集装箱达到500米(500 MiB = 524.288 MB)pod已重新启动。为避免pod使用过多内存(例如10GB),因为发生了一些不相关的事情。例如内存泄漏。您限制内存,以便其他Pod也可以在节点上运行。您必须了解容器内内存的正常情况。当你为java设置内存需求时,你可以检查你是否真的需要它们,如果你的集群像prometheus一样安装了度量。
https://github.com/kubernetes-sigs/metrics-server
您可以安装:
然后分析CPU和内存:
如果你想使用它,请参考文档,当你的容器运行时,你也可以进入并执行普通的top linux命令。