我有一个基于我在Openshift OKD集群中尝试正确实现内存请求/限制的经验的问题。我首先设置了no-request,然后观察集群度量报告的内存使用情况,然后将接近这一点的内容设置为一个请求。最后我遇到了高内存压力节点、重击和OOM杀死。我发现我需要将请求设置为更接近顶部virt大小的值(包括程序二进制大小),以保持性能。这有道理吗?我对请求(和明显的需求)和报告的度量使用之间的不对称性感到困惑。
您总是需要为内存溢出留出一些内存空间。如果由于某种原因,容器超过了某个垃圾收集系统的二进制文件中的内存(无论是来自应用程序的内存),它都将被杀死。例如,这在爪哇应用程序中是常见的,在这里,您指定堆,并且需要为垃圾收集器和其他东西增加额外开销,例如:
This blog 解释其中一些。