首页 > 其他分享 >Docker Arthas 实战指南

Docker Arthas 实战指南

时间:2024-02-06 11:03:06浏览次数:28  
标签:指南 Java 查看 arthas 内存 Arthas Docker 调试

Arthas 是一款强大的 Java 诊断和调试工具,它能够在生产环境中实时诊断 Java 应用,提供强大的调试功能,帮助开发者和运维人员解决各种 Java 应用的性能问题和调试挑战。本指南将介绍如何在 Docker 环境中使用 Arthas 进行实战。

官方文档

GitHub地址

gitee地址

应用场景

  1. 性能分析与优化: Arthas 可以帮助开发者监控应用程序的性能,找出性能瓶颈并进行优化。通过命令行工具,可以实时查看方法执行时间、CPU 使用情况、内存占用等性能数据。
  2. 线上问题排查: 在生产环境中,当应用出现问题时,Arthas 可以帮助快速定位问题。通过查看线程堆栈、监控方法执行情况、分析内存使用等,可以迅速定位到导致问题的代码段。
  3. 动态调试: Arthas 支持在运行中的 Java 应用中进行动态调试。可以实时修改代码、查看变量值、执行方法,帮助开发者理解程序运行状态。
  4. 类加载与类信息查看: 可以查看已加载的类信息,包括类的字段、方法、构造函数等。这对于理解应用的类加载情况和代码结构很有帮助。
  5. 实时监控: Arthas 提供了一些监控命令,可以实时查看应用的运行状态,包括线程数、类加载信息、堆内存使用等。
  6. 故障模拟: 在开发和测试阶段,可以使用 Arthas 模拟一些异常场景,例如模拟某个方法抛出异常,以便测试系统在异常情况下的行为。
  7. 代码热替换: Arthas 支持热替换 Java 类,可以在不停止应用的情况下修改和更新类文件,加速开发调试过程。
  8. 监控方法调用链: 可以通过 trace 命令监控指定方法的调用链,方便了解方法的调用情况,帮助定位问题。
  9. 内存分析: Arthas 提供了一些命令用于查看 JVM 的内存使用情况,包括堆内存、非堆内存等,有助于及时发现内存泄漏等问题。
  10. 应用容器中的诊断: Arthas 支持与容器技术集成,例如 Docker,通过 Docker 插件可以在容器中使用 Arthas 对 Java 应用进行诊断和调试。

服务端搭建

1. 拉取 Arthas 服务端镜像

# 拉取 Arthas 服务端容器镜像
docker pull arthas/arthas-server

2. 启动 Arthas 服务端容器

# 启动 Arthas 服务端容器,并将 3658 端口映射到宿主机
docker run -d -p 3658:3658 --name arthas-server arthas/arthas-server

客户端连接

1. 下载 Arthas 客户端

# 下载 Arthas 客户端
curl -O https://arthas.aliyun.com/arthas-boot.jar

2. 连接到运行中的容器

# 连接到容器
java -jar arthas-boot.jar --target-ip <服务器IP> --target-port 3658

替换 <服务器IP> 为你的服务器实际 IP 地址,3658 为 服务器上运行的端口号。

3. 进入 Arthas 命令行

成功连接后,你将进入 Arthas 的命令行界面。在这里,你可以使用各种 Arthas 命令进行诊断和调试。

常用分析

1. 查看类加载信息

# 查看类加载信息
$ classloader

2. 监控方法执行时间

# 监控方法执行时间
$ watch com.example.service.UserService getUser

3. 分析线程栈信息

# 查看线程栈信息
$ thread

4. 查看方法调用堆栈

# 查看方法调用堆栈
$ trace com.example.service.UserService getUser

5. 查看堆内存使用情况

# 查看堆内存使用情况
$ dashboard

6. 监控指定方法的入参和返回值

# 监控指定方法的入参和返回值
$ watch com.example.service.UserService getUser '{params,returnObj,throwExp}'

7. 查看当前系统负载情况

# 查看当前系统负载情况
$ sysmonitor

8. 查看当前活动线程情况

# 查看当前活动线程情况
$ thread --state

9. 查看 JVM 运行时信息

# 查看 JVM 运行时信息
$ dashboard --name dashboard

10. 查看 Java 进程的启动参数

# 查看 Java 进程的启动参数
$ vmoption

11. 退出 Arthas

在 Arthas 命令行中,输入 quitexit 可以退出 Arthas 工具。

通过这个 Docker Arthas 实战指南,你将学会如何在容器环境中使用 Arthas 进行 Java 应用的实时诊断和调试。希望这对提升你的 Java 应用调试能力有所帮助!

标签:指南,Java,查看,arthas,内存,Arthas,Docker,调试
From: https://blog.51cto.com/jiemei/9617630

相关文章

  • Docker
    取证时会遇到数据库服务开启在docker容器内,其实原理都是一致的,重要的是熟悉docker的相关命令!镜像列出所有镜像dockerimages不同的镜像可以来自同一个仓库源,为了加以区分,我们添加了TAG这个字段例如我们需要用ubuntu14.04的镜像启动一个新的容器dockerrun-itubuntu:14.04......
  • 在服务器中安装有ubuntu图形界面的docker,并通过主机的VNC进行远程控制(web页面远程控制
    参考链接https://github.com/fcwu/docker-ubuntu-vnc-desktop.git1.拉取镜像dockerpulldorowu/ubuntu-desktop-lxde-vnc2.直接dockerrun启动,启动参数如下,在浏览器打开,这里设置的端口是6080,在服务器执行这个命令运行之后dockerrun--namevnc_test-p6080:80-v/dev/s......
  • docker设置国内镜像源
    一、国内加速地址1、阿里云镜像站:(需登录,免费)https://<your_code>.mirror.aliyuncs.com2、网易云镜像站:http://hub-mirror.c.163.com3、百度云镜像站:https://mirror.baidubce.com4、上海交大镜像站:https://docker.mirrors.sjtug.sjtu.edu.cn5、南京大学镜像站:https://doc......
  • docker 部署 asp.net8 项目
    1、需要编写dockerfile文件#基础镜像FROMmcr.microsoft.com/dotnet/aspnet:8.0ASbase#工作目录WORKDIR/app#开放访问端口EXPOSE8080#复制内容到镜像COPY./app#指定默认入口ENTRYPOINT["dotnet","Web.Admin.dll"]2、编写docker-compose.yaml文件version:'3's......
  • docker 启动jar包
    1、编写Dockerfile文件FROMopenjdk:8ENVTZ="Asia/Shanghai"ADDcim-gisportal.jarcim-gisportal.jarADDnohup.outnohup.outENTRYPOINT["nohup","java","-jar","/cim-gisportal.jar",">nohup.out&&quo......
  • Docker基本原理与常用命令
    1docker架构K8S:CRI(ContainerRuntimeInterface)Client:客户端;操作docker服务器的客户端(命令行或者界面)Docker_Host:Docker主机;安装Docker服务的主机Docker_Daemon:后台进程;运行在Docker服务器的后台进程Containers:容器;从镜像创建的运行实例.可以被启动,开始,停止,删除.每......
  • Docker网络与存储
    网络:bridge模式:当Docker进程启动后,会在主机上创建一个名为docker0的虚拟网桥,主机上启动的docker容器会连接到这个虚拟网桥上.从docker0子网中分配一个ip给容器使用,并设置docker0的IP地址为容器的默认网关.在主机上创建一堆虚拟网卡设备vethpair设备,Docker将vethpair设......
  • docker中调试java代码
    以shiro550为例子在vulhub/shiro/CVE-2016-4437启动环境docker-composeup-d然后看一下当前容器启动的命令是java-jar/shirodemo-1.0-SNAPSHOT.jar将容器内的jar包复制出来dockercp容器id:/shirodemo-1.0-SNAPSHOT.jar.然后ijidea新建项目,并且解压jar包到项......
  • Docker:Failed to copy files, no space left on device
    主页个人微信公众号:密码应用技术实战个人博客园首页:https://www.cnblogs.com/informatics/问题描述在Mac上进行docker构建时,偶尔会遇到以下问题Failedtocopyfiles:userspacecopyfailed:write/var/lib/docker/volumes/xxx/_data/xxx.dbf:nospaceleftondevice......
  • 洛谷题单指南-递推与递归-P1028 [NOIP2001 普及组] 数的计算
    原题链接:https://www.luogu.com.cn/problem/P1028题意解读:给定n,构造数列,可以用递归或者递推。解题思路:1、递归定义count(n)返回数列的个数  n==1时,count(n)=1  n!=1时,count(n)=1+count(1)+count(2)+...+count(n/2)注意,递归会导致大量重复计算,需要用一个hash......