Performance Tuning -- 08 -- Btrace的简单应用

原文链接:Performance Tuning – 08 – Btrace的简单应用


相关文章:


当生产环境出现问题时,我们可能会需要获取程序运行时的相关参数来进行分析,而常规方法需要修改代码,将相关参数输入到日志中,再将项目重新发布到生产环境。不过要是这么做,一是十分繁琐,二是风险较大,此时 Btrace 就登场了


一、安装 Btrace

  • 首先我们先上官网 (btrace) 下载 Btrace,这里我下载的是 1.3.11.3 版本
    在这里插入图片描述

  • 接着配置 Btrace 环境变量 (替换成自己的安装路径)

    环境变量变量值
    JAVA_HOMED:\MySoftware\Java\jdk8.0\jdk1.8.0_151
    BTRACE_HOMED:\MySoftware\Btrace\btrace-bin-1.3.11.3
    PATH%JAVA_HOME%\bin,%BTRACE_HOME%\bin
  • 检查是否安装成功
    在这里插入图片描述


二、搭建 Btrace 脚本项目

  • 实际上就是搭建一个 SpringBoot 项目,引入 Btrace 的三个相关 jar 包即可

    <dependency>
        <groupId>com.sun.btrace</groupId>
        <artifactId>btrace-agent</artifactId>
        <version>1.3.11.3</version>
        <type>jar</type>
        <scope>system</scope>
        <systemPath>D:\MySoftware\Btrace\btrace-bin-1.3.11.3\build\btrace-agent.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.sun.btrace</groupId>
        <artifactId>btrace-boot</artifactId>
        <version>1.3.11.3</version>
        <type>jar</type>
        <scope>system</scope>
        <systemPath>D:\MySoftware\Btrace\btrace-bin-1.3.11.3\build\btrace-boot.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.sun.btrace</groupId>
        <artifactId>btrace-client</artifactId>
        <version>1.3.11.3</version>
        <type>jar</type>
        <scope>system</scope>
        <systemPath>D:\MySoftware\Btrace\btrace-bin-1.3.11.3\build\btrace-client.jar</systemPath>
    </dependency>
    
  • 这里需要注意的是,1.3.11.3 版本的 jar 包无法在中央仓库中找到 (中央仓库中最高版本为 1.2.3),因此我们需要在 Btrace 根目录的 build 文件夹下找到这三个 jar 包,再通过本地依赖来进行引入


三、运行 Btrace 脚本

  • 使用命令行 btrace <trace_script>

    • HelloController.java

      @RestController
      public class HelloController {
      
          @GetMapping(value = "/arg/simple/{name}")
          public String argSimple(@PathVariable("name") String name) {
              return "Hello " + name + "!";
          }
      }
      
    • PrintArgSimple.java

      @BTrace
      public class PrintArgSimple {
      
          @OnMethod(clazz = "com.xj.controller.HelloController", 
                    method = "argSimple")
          public static void test(@ProbeClassName String pcn, 
                                  @ProbeMethodName String pmn, 
                                  AnyType[] args) {
              BTraceUtils.printArray(args);
              BTraceUtils.println(pcn + " , " + pmn);
              BTraceUtils.println();
          }
      }
      
      • 如上所示,PrintArgSimple 即为 Btrace 脚本 (Btrace 脚本可以与需要监控的代码完全隔离)

      • 此处脚本用于监控 argSimple() 方法所在类的类名、方法名以及入参

    • 运行脚本

      • 先运行 HelloController 类所在的项目,端口为 9998

      • 再运行 Btrace 脚本,对 argSimple() 方法进行监控
        在这里插入图片描述

      • 然后在浏览器中调用 “/arg/simple/{name}” 接口
        在这里插入图片描述

      • 此时在 cmd 中就会实时输出 argSimple() 方法所在类的类名、方法名以及入参
        在这里插入图片描述

  • 在 JVisualVM 中添加 Btrace 插件

    • 按照之前添加 Visual GC 的方式来添加 Btrace 插件

    • 然后打开 JVisualVM,选中 HelloController 类所在的 Java 进程,右击选择 Trace application
      在这里插入图片描述

    • 然后我们将之前编写好的脚本直接复制进来运行即可
      在这里插入图片描述

    • 最后在浏览器中调用 “/arg/simple/{name}” 接口
      在这里插入图片描述

    • 此时在 Output 中就会实时输出 argSimple() 方法所在类的类名、方法名以及入参
      在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值