Arthas 简介
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
Arthas 官方
名称 | 地址 |
官方文档 | https://arthas.aliyun.com/doc |
Docker 容器使用 Arthas
Spring Boot 项目使用 Docker 容器部署,如何在容器中使用 Arthas 呢?
方案一:容器内下载运行 Arthas
在这种情况下,通常是基于一种自信的假设,即不会在基础镜像中安装 Arthas。然而,如果问题确实发生,为了保留现场,需要采用这种方案。
# 进入容器 docker exec -it youlai-boot /bin/sh # 下载并运行 Arthas wget https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar
方案二:安装 Arthas 到基础镜像
在 DockerFile 里添加安装 Arthas 命令
# 基础镜像 FROM openjdk:17-jdk-alpine # 维护者信息 MAINTAINER youlai <youlaitech@163.com> # 设置国内镜像源(中国科技大学镜像源),修改容器时区(alpine镜像需安装tzdata来设置时区),安装字体库(验证码) RUN echo -e https://mirrors.ustc.edu.cn/alpine/v3.7/main/ > /etc/apk/repositories \ && apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone \ && apk --no-cache add ttf-dejavu fontconfig # 在运行时自动挂载 /tmp 目录为匿名卷,提高可移植性 VOLUME /tmp # 将构建的 Spring Boot 可执行 JAR 复制到容器中,重命名为 app.jar ADD target/youlai-boot.jar app.jar # 安装 Arthas 到镜像 COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas # 指定容器启动时执行的命令 CMD java \ -Djava.security.egd=file:/dev/./urandom \ -jar /app.jar # 暴露容器的端口 EXPOSE 8989
常见问题排查
CPU 占用过高
# 查看控制台 dashboard
# 查看CPU占用top5 的线程 thread -n 5
内存占用过高
// TODO
死锁排查
# 查看是否有死锁 thread -b
结语
在Docker容器中使用Arthas,为Java应用的监控与排查提供了便捷利器。通过实时诊断和解决CPU、内存、死锁等问题,Arthas极大地提高了开发调试的效率,为应用的稳定性和性能优化提供了有力支持。将这一强大工具与容器技术结合,为现代应用开发提供了更加灵活、高效的解决方案。