java - 即使运行容器,docker stats 也显示零内存使用

标签 java docker jvm

我有两个由 Docker Swarm 运行的容器:

# docker ps
CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS              PORTS               NAMES
18f1e7d79f5b        default/image1:latest               "/bin/sh -c 'java ..."   12 hours ago        Up 12 hours                             image1.1.x56zz152kmqtqpxzle5nkbs8r
11d1f05fcff1        default/image2:latest               "java -cp /app/sca..."   13 hours ago        Up 13 hours                             image2.1.ljztzeeh8i5r6ebr3n4hcj45e

$ docker stats --no-stream
CONTAINER           CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
18f1e7d79f5b        0.92%               0B / 0B             0.00%               648B / 0B           0B / 0B             0
11d1f05fcff1        0.91%               0B / 0B             0.00%               39.9MB / 26.9MB     51.2MB / 0B         0

主机操作系统是 Debian Jessie。两个容器中都有 JVM 应用程序。为什么docker stats显示零内存使用?我应该以某种方式配置我的 Java 应用程序以便能够在 docker stats 中查看内存使用情况吗? ?还有其他方法可以检查内存使用情况吗?

最佳答案

很有可能您的内核中没有启用内存 cgroup 记帐(这是一个 common problem,随着时间的推移,其他人在基于 Debian/Ubuntu 的安装中也遇到了这种情况)。

你能用docker info验证吗?或者守护进程的输出表明您没有看到如下消息,这篇博文很好地总结了这一点:http://awhitehatter.me/debian-jessie-wdocker/ ?如果是这样,修复程序也列在那里,以及我在第一句话中链接的 GitHub 问题中。安装文档中还有一节关于 enabling cgroup memory accounting虽然它只提到了 Ubuntu 而不是 Debian。

关于java - 即使运行容器,docker stats 也显示零内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45541242/

相关文章:

JAVA_HOME 没有指向 JDK : Unable to start google app engine

java - 如何对包含图标的 JTable 列进行排序?

macos - 通过 boot2docker 挂载卷到 postgres 容器

java - 如何找出确切的年轻/老一代在内存中的位置?

java - 实现与映射值的比较

java - 我们可以用 ArrayDeque 替换 ArrayList 以获得更好的性能吗?

docker - Memgraph Docker 镜像之间有什么区别?

linux - 错误 : Service "xxx" uses an undefined network "xxx"

java - OpenJDK的虚拟机可插拔吗?

jvm - 永久代是堆的一部分还是在 jvm 中位于自身的不同空间