c语言编程笔录

首页 >   > 笔记大全

笔记大全

SpringBoot整合java诊断工具Arthas怎么用

更新时间:2023-10-21
前言 在现代企业级开发中,难免会遇到一些环境问题和线上应用问题,需要进行一定的诊断和优化。Java开发人员常常使用一些工具进行代码优化和故障排查,这些工具可以为我们提供高水平的响应时间和性能体验,同时也可以减少一些不必要的告警。Arthas是Java极客必备的一款应用性能分析工具,可以让我们实时地监控和统计应用的状态,大大提高了我们的开发效率。 一、Arthas简介 Arthas是阿里巴巴开发的一款Java应用性能分析工具,它可以提供实时诊断能力,可以检测Java方法调用,对象创建和销毁,线程状态,JVM profiling等各种类型的事件。Arthas是基于字节码增强的方式实现的,可以为我们提供更加准确的诊断数据,从而快速解决问题。 二、SpringBoot整合Arthas 下面就来介绍一下SpringBoot如何整合Arthas: 1、引入依赖 需要在SpringBoot工程中引入Arthas的Java客户端依赖,配置如下:
    
        com.taobao.arthas
        arthas-client
        3.1.4
    
Arthas的客户端提供了一个命令行界面,这样可以方便的使用Arthas进行性能分析和诊断问题。需要在SpringBoot工程中增加一个配置类ArthasConfiguration,代码如下:
@Configuration
public class ArthasConfiguration {

    /**
     * 初始化arthas所需的 AgentBuilder , 并注册至 Instrumentation 中
     */
    @Bean(initMethod = "attach")
    public AgentBuilder arthasAgentBuilder() {
        return new AgentBuilder.Default().type(ElementMatchers.nameStartsWith("com.jmontes"))
                .transform((builder, typeDescription, classLoader, module) -> builder
                        .method(ElementMatchers.any()).intercept(MethodDelegation.to(ArthasCommand.class)))
                .with(AgentBuilder.TypeStrategy.Default.REDEFINE);
    }
}
以上代码的作用为利用JVM的Instrumentation提供的基本方法,对当前JVM中的Class进行动态注入,从而实现Arthas的对类、方法以及参数的监听签名加强实现。这里需要说明的是,这里的"com.jmontes"需要替换成具体的包名,可以根据实际项目包名进行设置。 2、打开控制台 在SpringBoot工程启动的日志中,会输出以下信息:
ArthasArgs: [arthas-client.jar] com.taobao.arthas.cli.commands.ArthasCommandTest/arthasTest [测试Arthas]
ArthasCore: downloaded arthas-boot.jar from https://arthas.aliyun.com/arthas-boot.jar, save as /文档及下载/arthas-boot.jar
.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Arthas-3.1.4 :: (v3.1.4.f27c1ac)
install /xx/xx/arthas/boot with classloader sun.misc.Launcher$AppClassLoader@18b4aac2
verbose:class
/boot/com/taobao/arthas/bootstrap/Bootstrap.class 
以上信息中,最后一条ArthasCore信息告诉我们Arthas已经开始工作。我们可以在SpringBoot的控制台窗口中输入arthas命令来打开Arthas控制台,如下所示:
$ java -jar /文档及下载/arthas-boot.jar
.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Arthas-3.1.4 :: (v3.1.4.f27c1ac)
使用文档: https://alibaba.github.io/arthas
您已进入了arthas, 可以尝试输入 help 查看命令帮助信息

$ help
欢迎使用 Arthas,目前您使用的是原生控制台方式,将不支持部分控制台命令和展示效果。
可以参考文档 https://arthas.aliyun.com/doc/faq.html#?questionId=179486 进行切换命令行方式。
当前文档中的截图存在命令行效果和在线监控效果混淆的情况。实际效果以当前使用的方式为准。
...
3、关键性能诊断命令 使用Arthas控制台可以执行一些关键性能诊断命令,如下所示: - jvm相关命令:jvm、dashboard、heapdump等命令。 - class相关命令:jad、sm、webapp等命令。 - method相关命令:trace、tt、tsa等命令。 - monitor相关命令:monitor、monitor-dump等命令。 三、 总结 通过SpringBoot整合Arthas的过程,我们可以看到,相对于传统的性能分析工具,Arthas可以提供更加准确和实时的诊断能力,从而节约了开发人员的调试时间和精力,兼容了不同项目的需求,减少了我们的开发工作量,提高了我们的开发效率和质量。同时也说明了在企业级架构中使用优秀的工具的重要性,为我们的工作提供了有力帮助。