情况:
prometheus pod中有两个容器(config-reloader, prometheus)
我将resources.limits.memory分别设置为50Mi, 32Gi
度量container_memory_failcnt在5分钟内从10急剧增加到8000(精确地速率(container_memory_failcnt{}[5m]))
mertic container_memory_failcnt告诉容器达到内存限制的次数。
但是根据度量container_memory_working_set_bytes, prometheus容器使用了18Gi的内存。
吊舱也不会被OOM杀死。但是度量container_memory_failcnt急剧增加。
OOM与达到内存限制不同?
我想知道为什么普罗米修斯容器在5分钟内使用了如此多的内存(18Gi)。(通常使用10Gi或更低)
在google上搜索了2天后,我知道了答案。
container_memory_failcnt检查目标容器是否达到内存限制。
此指标与container_memory_usage_bytes一起使用。
度量container_memory_working_set_bytes是容器当前使用的实际内存大小。
房间杀手正在关注这个指标。
所以在我的例子中,container_memory_failcnt一直在增加,但container_memory_working_set_bytes低于限制。容器的内存,使pod不被oom杀死。
特别感谢Bob cotton
https://faun.pub/how-much-is-too-much-the-linux-oomkiller-and-used-memory-d32186f29c9d