• Arthas使用


    说明

    之前一直不想学习Arthas,想着生产不能随便用。用于动态添加调试日志还是很方便的,还有更多更强大功能慢慢研究

    官网:https://arthas.gitee.io/index.html

    下载并连接

    curl -O https://arthas.aliyun.com/arthas-boot.jar
    java -jar arthas-boot.jar

    动态新增调试日志

    用于增加业务代码调试日志,或者框架内部调试日志很方便

    #将方法区指定类,反编译成java文件 --source-only是不生成classLoader信息 可以看自己代码是否有改到之类的
    jad --source-only  com.liqiang.demo.controller.HelloWordController > /Users/liqiang/Desktop/logs/HelloWordController.java
    
    #修改反编译的java修改后编译成class并输出到指定目录 复杂类可能会失败,可以通过本地编译成class然后替换
    mc -d /Users/liqiang/Desktop/logs /Users/liqiang/Desktop/logs/HelloWordController.java
    
    #热部署重新加载指定class,可以指定classLoader
    redefine /Users/liqiang/Desktop/logs/com/liqiang/demo/controller/HelloWordController.class

    链路追踪

    更多使用方式看文档trace命令,缺点好像是aop切面里面的耗时统计不了,只能定位到aop 然后一次监控aop里面调用的业务代码

     trace com.ewei.module.talk.service.impl.ChatCacheServiceImpl updateEngineerQueue --skipJDKMethod true

    skipJDKMethod 是否统计jdk代码的堆栈

    https://arthas.gitee.io/trace.html

    跟业务代码看到for循多次访问了多次redis 可以通过优化为管道

    观察函数入参和出参

    whatch文档

    https://arthas.gitee.io/watch.html

    watch com.ewei.helpcenter.logic.impl.AccessConfigLogicImpl validPasswordMessage "{params}" -b -x 3
    
    watch com.ewei.web.controller.account.EngineerController doEngineerInit "{params, returnObj}" -b
  • 相关阅读:
    jQuery实现 自动滚屏操作
    jQuery实现全选、全不选以及反选操作
    读曾国藩
    把时间当作朋友 之感知时间
    把时间当作朋友4未知永远存在
    Android N 设置中语言列表介绍
    如何编译ICU资源
    idea常用快捷键
    shell 笔记
    Json笔记
  • 原文地址:https://www.cnblogs.com/LQBlog/p/16318599.html
Copyright © 2020-2023  润新知