arthas

  • arthas相关地址:https://www.yuque.com/arthas-idea-plugin
  • wathch(其他类似)的2个重要ognl表达式
    • wathch com.xxx.Yyy {1} -v -x 3 -n 3 {2}
      • {1}:观察表达式,控制打印成什么样子
      • {2}:条件表达式,控制{1}是否打印
    • {1}处,如果是列表,那么可以进行投影操作,如: "params[0].{#this.id}";
    • {1}处的作用,有时候参数嵌套太深,即使 -x 4都不一定能看到具体值,那么这时候就有必要使用ognl表达式处理下参数,让参数层数少点
    • ognl表达式如果是list,那么获取属性(投影)需要用花括号,如: params[0].{#this.id},并且可以级联操作 params[0].{#this.id}.{#this},只要不是最后一步,似乎不要#this也行
    • ognl表达式如果不是list,那么获取属性不需要花括号,如: params[0].userName
  • 对于偶发性的bug,可以使用watch+异步任务,如:watch *DeveloperController process "params[0].{#this.id}" -v -x 3 > /Users/wangdehai/logs/arthas/aa.log &, 后台执行,一天只出现一次问题排查
  • Arthas的一些特殊用法文档说明
  • 关于ognl表达式,随便找两个帖子看一下就明白了
  • 关于tennel配置如下:
# 指定arthas.app-name会自动生成arthas.agent-id为${arthas.app-name}_xxxx,无需手动指定arthas.agent-id(当然也可以指定为类似:${spring.application.name}_${random.uuid}这种)
arthas.app-name = ${spring.application.name}
server.port=8081

arthas.http-port = -1
# arthas.telnet-port如果设置成了-1,那么就是随机端口,telnet localhost 3658就失效了
arthas.telnet-port = -1
# 要使用tunnel功能,那么arthas.tunnel-server必须要填写
arthas.tunnel-server = ws://localhost:7777/ws
  • 启动服务:java -jar arthas-tunnel-server-3.7.2-fatjar.jar --arthas.enableDetailPages=true
  • tunnel的app列表地址: localhost:8080/apps.html
  • 关于tunnel有没有必要,如果服务每个节点只有1个,并且能够进入到容器,那么直接telnet进入操作即可,如果服务节点比较多,或者无法进入到容器,那么就有必要使用
posted @ 2024-06-13 15:07  神一样的存在  阅读(43)  评论(0编辑  收藏  举报