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