一、Arthas入门

   Arthas 是阿里巴巴开发出的一款线上调试工具,他的厉害之处就是我们不需要停止线上的服务就可以排查问题,监控方法。Arthas使用简单,上手快等优点让我觉得十分方便, 强力推荐。

  1. 启动官网给的测试应用
curl -O https://arthas.aliyun.com/math-game.jar
java -jar math-game.jar
  1. 使用相同用户启动arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

启动成功后,能够观察到arthas的字样,表明arthas启动成功。
另外我们可以直接通过 http://127.0.0.1:3658/ 访问web console:

一个简单的java应用连接到arthas就这样成功了。

二、Arthas实战之调式springboot应用

1. docker 容器连接上arthas

  使用arthas诊断线上的docker部署的java应用, docker 容器启动arthas格式: docker exec -it ${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar

同样的启动成功后,会出现Arthas的大字样!

2.线上使用命令操作springboot应用

  

thead命令

thread命令查看应用运行的一些线程。

dashboard命令

dashboard 命令可以查看JVM里的各内存区域使用情况,非常地详细直观!

noheap: 对外内存,直接由操作系统管理。
code_cache: 代码区。
metaspace: 元数据区。

logger命令

查看日志命令:

logger


根据logger命令打印出的信息,我们可以打印出相关的Springboot日志

cat /tmp/spring.log

jad命令

   可以通过jad命令反编译线上的源代码,这样可以查看本地与线上类代码的差异。

jad 类名表达式匹配

** watch命令

个人觉得watch命令在调试中使用的比较多,也比较重要, 特别是观测接口的调用信息等。
例如我们想要监控一个方法,可以通过如下格式来进行监控、

watch com.example.shop.controller.ProductController getProducts
  • com.example.shop.controller.ProductController 为类的全限定名
  • getProducts 为类里的指定方法。
    用postman调用此方法对应的接口,观察arthas控制台:

    还有如果我们想要观察入参和返回结果,那么就可以在使用-x 参数, 命令如下,2表示输出结果的遍历深度,默认为1。
watch com.example.shop.controller.ProductController getProducts -x 2


添加 -v 参数可以打印出更多的信息:

 watch com.example.shop.controller.ProductController getProducts -x 2 -v

watch各命令参数表

参数名称 参数说明
class-pattern 类名表达式匹配
method-pattern 方法名表达式匹配
express 观察表达式
condition-express 条件表达式
[b] 在方法调用之前观察
[e] 在方法异常之后观察
[s] 在方法返回之后观察
[f] 在方法结束之后(正常返回和异常返回)观察
[E] 开启正则表达式匹配,默认为通配符匹配
[x:] 指定输出结果的属性遍历深度,默认为 1

monitor命令

此命令可监控方法调用成功或失败,可查看评价时间等,可用如下命令统计5s内的方法调用结果,5表示监控周期。

monitor -c 5 com.example.shop.controller.ProductController getProducts

-c : 统计周期, 默认周期为60s。
-b: 方法调用之前执行。

使用arthas诊断kubernetes里的方法和上述类似, 命令格式kubectl exec -it ${pod} --container ${containerId} -- /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"

arthas官网指南: https://arthas.aliyun.com/doc/docker.html

线上调试神器arthas相关推荐

  1. BTrace工具(linux版)---线上调试神器

    如果在分析线上问题时,发现日志打的不全,无法定位怎么办?添加日志重新上线,不是一个好方法,特别是调试时,可能要反复添加日志来定位问题或者线上出现的问题很难再复现,根本就没有机会添加日志再继续分析,这时 ...

  2. 线上Debug神器--Arthas(阿尔萨斯)

    目录 一.Arthas环境准备 1.概述 2.运行环境要求 3.安装&卸载 二.Arthas命令学习 一.Arthas环境准备 1.概述 Arthas是Alibaba开源的Java诊断工具,深 ...

  3. 发条js调试工具_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...

    @open-node/antman 窥探进程内部,让 Node.js 生产环境线上调试成为可能 解决了什么问题? 日常在开发服务端代码,很多是服务类型的,比如基于http的api,或者一些任务脚本,需 ...

  4. 禅道 bug状态 open_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...

    @open-node/antman 窥探进程内部,让 Node.js 生产环境线上调试成为可能 解决了什么问题? 日常在开发服务端代码,很多是服务类型的,比如基于http的api,或者一些任务脚本,需 ...

  5. greys线上调试代码

    greys线上调试代码 软件的说明文档地址:https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf 文件位置: >cd /u ...

  6. 【工具】线上办公神器

    目录 ProcessOn Tower 为知笔记 小画桌协作白板 Apifox 参考 ProcessOn ProcessOn是一款专业在线作图工具,满足多种图形的绘制,包括流程图.思维导图.原型图.BP ...

  7. 没有打印日志,如何排查线上问题?——arthas(阿尔萨斯)

    背景 实际工作中,有时候漏打了日志或者线上环境才会出现问题,不得不到线上去复现,导致问题无法及时处理或者线上的包版本与本地的包版本不一样,导致各种种样的问题缺少实际一手的数据进行分析排查问题. Art ...

  8. java线上排查利器arthas

    当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支 ...

  9. java线上诊断工具,Java线上诊断神器Arthas-1

    Arthas 是Alibaba 开源的一款线上诊断工具,相比Java 自带的jinfo, jmap,jstat 等工具更方便(起码不用记那么多参数),而且利用字节码增强技术,可以很好的对线上的问题进行 ...

最新文章

  1. 基于机器学习逻辑回归算法完成癌症病人的肿瘤是否良性的判断
  2. 11gpath失败 oracle_Oracle 11gR2执行DBCA报错误
  3. 安装NodeJs运行环境
  4. iOS开发UI篇——Button基础
  5. Angular里遇到的一个依赖注入问题以及解决办法
  6. jquery 加载中_在 vue 中使用 ztree
  7. 他35k月薪,如何扛住redis面试!
  8. javascript开发HTML5游戏--斗地主(单机模式part1)
  9. oracle rpad()函数
  10. Silverlight4 麦克风应用-录音机
  11. 吉米多维奇数学分析习题集每日一题--泰勒公式习题1377
  12. 集成电路设计——闩锁效应
  13. oracle 省份三个字的,中国所有省份的简称是什么?
  14. 电影赏析 002《毒战》
  15. windows os x linux比较,windows、Linux与OS X相比,哪个系统更适合写代码?
  16. 东华大学计算机考研大纲,2019年东华大学854计算机及软件工程专业基础综合考研初试大纲...
  17. js关闭浏览器当前页(iframe)
  18. ROS中的机器人模型控制——ros_control
  19. AutoLisp从入门到放弃(十二)
  20. Springboot用HttpServletRequest作为controller入参后接收不到请求

热门文章

  1. 【FXCG】人民币中间价报6.3401,下调58点
  2. Android 强制第三方应用横屏显示
  3. 国家大数据政策文件汇编(2022年) 附下载
  4. android手机icoude邮件,如何在Android上设置iCloud电子邮件访问 | MOS86
  5. leetcode 两数相加,在ubuntu上编译通过,显示结果了,在leetcode上报错了,找错在哪?
  6. 大数据未来会如何发展
  7. Vue3.x 报 Uncaught TypeErrorObject(...) is not a function( Vue3对象不是函数解决思路)
  8. SOA架构与微服务架构到底是什么?以及对应的一些常用的框架简介
  9. python中in什么意思_python中5in什么意思
  10. 【超详细】C51单片机与HC-05蓝牙模块实现手机点灯