基于我的经验,我有一个尝试在OpenShift OKD集群中正确实现内存请求/限制的问题。首先,我不设置任何请求,然后观察查看报告了哪些群集指标用于内存使用,然后将一个接近该指标的值设置为请求。我最终遇到了高内存压力节点,崩溃和oom死亡。我发现我需要在“ top”(包括程序二进制文件大小)中将请求设置为更接近VIRT大小,以保持性能。这有意义吗?我对请求(和明显的需求)与度量中报告的使用之间的不对称感到困惑。
答案 0 :(得分:1)
您总是需要留出一些内存余量,以防内存溢出。如果容器由于某种原因超出了内存,无论是从您的应用程序还是从某些垃圾回收系统的二进制文件中删除,它将被杀死。例如,这在Java应用程序中很常见,在Java应用程序中您指定了一个堆,并且您需要额外的开销来进行垃圾回收器和其他操作,例如:
This blog解释了其中一些。