arthas icon indicating copy to clipboard operation
arthas copied to clipboard

docker stats 与arthas监控查看的内容完全不一致

Open mintonzhang opened this issue 2 years ago • 0 comments

  • 我已经在 issues 里搜索,没有重复的issue。

环境信息

  • arthas-boot.jar 或者 as.sh 的版本: 3.7.1
  • Arthas 版本: 3.7.1
  • 操作系统版本: Linux iZbp13tv4lhu40ys4zjjyxZ 5.10.134-15.2.al8.x86_64 #1 SMP Thu Sep 14 03:42:13 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
  • 目标进程的JVM版本: openjdk11
  • 执行arthas-boot的版本: 3.7.1
  • 我使用的arthas-spring-boot-starter 3.71

重现问题的步骤

  1. 使用arthas 网页版监控查看得知,jvm内存占用和线程情况如下 image image
  2. 使用docker stats查看 image

java 运行命令


-server -XX:+UseContainerSupport -XX:InitialRAMPercentage=90.0 -XX:MaxRAMPercentage=90.0  -Xss512k -XX:+UseG1GC -Xlog:gc*:file=./gc/gc_%p_%t.log:time,tags,level:filecount=5,filesize=50m -XshowSettings:vm -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./gc/logs/heap-dump-%t.hprof -verbose:gc

Dockerfile


FROM openjdk:11.0.11-jdk-slim
MAINTAINER [email protected]
ENV TZ=Asia/Shanghai
RUN echo -e "${TZ}" > /etc/timezone && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime
WORKDIR /server
VOLUME /server
# logs是存放普通日志,gc是存放gc日志
RUN mkdir -p config gc
COPY ./target/server.jar .
CMD sleep 5;java -Dfile.encoding=utf-8 -server ${JAVA_OPTS}  -jar server.jar ${SPRING_OPTS}

期望的结果

通过arthas的 memory与docker stats 使用的内存基本相同(正负10%)

实际运行的结果

实际运行效果如图,arthas中memory与docker stats 差距太大。 arthas中计算得知不超过1.5G,但是在docker stats中要2.4G。

mintonzhang avatar Nov 26 '23 09:11 mintonzhang