首页 > 解决方案 > 由 JVM 或 Docker 容器衡量的 RAM 使用率差异

问题描述

我们在 Kubernetes 上的 Docker 容器中运行了一个 java 应用程序。我们以两种不同的方式测量 RAM 使用情况,一种是根据 JVM 报告的指标,另一种是根据 Container Advisor (cadvisor)。我们在 Prometheus 中导入所有指标,我在这里发布了一些图表,所有这些图表都引用了同一个 Pod 和 Container。前五张图是 JVM 报告的使用情况,最后一张是 cAdvisor 报告的使用情况。

jvm_memory_committed jvm_memory_used sum_jvm_memory_used sum_jvm_memory_committed sum_jvm_memory_max container_working_set_memory_bytes

我的问题是:

  1. cAdvisor 和 JVM 报告的图表形式为何如此不同?
  2. cAdvisor 总是报告比 JVM 更多的 RAM 使用情况,特别是在 container_memory_working_set_bytes 和 sum_jvm_memory_committed 之间,差异稳定在 300Mb 左右。可能的解释是什么?

标签: javadockercadvisor

解决方案


推荐阅读