[12]深入浅出工作开源框架Camunda: 使用Arthas监控Camunda
Posted 朱清云的技术博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[12]深入浅出工作开源框架Camunda: 使用Arthas监控Camunda相关的知识,希望对你有一定的参考价值。
很早就想使用Arthas结合Camunda一起来玩玩。那么什么是Arthas呢?
Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。
- 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
- 怎么快速定位应用的热点,生成火焰图?
- 怎样直接从JVM内查找某个类的实例?
Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
首先到https://arthas.aliyun.com/arthas-boot.jar 这个地址把Arthas下载下载。然后通过下面的命令启动。
java -jar arthas-boot.jar
启动后其会扫描当前电脑上所有的java应用程序,果然扫描到了camunda的应用程序。
然后我输入 1 进行启动。就进入了Arthas的控制台。在命令行输入:dashboard
dashboard
其会一直刷新Camunda的运行时候的信息。
按下Ctrl +C 终止其Dashboard的刷新。在Arthas的控制台下输入 thread,其会输出所有的线程信息。
thread
在arthas的命令行里面输入一个具体的线程号,比如thread 25
[arthas@5336]$ thread 25
"Camunda BPM Runtime Telemetry Reporter" Id=25 TIMED_WAITING on java.util.TaskQueue@35bbf8fa
at java.base@15.0.2/java.lang.Object.wait(Native Method)
- waiting on java.util.TaskQueue@35bbf8fa
at java.base@15.0.2/java.util.TimerThread.mainLoop(Timer.java:553)
at java.base@15.0.2/java.util.TimerThread.run(Timer.java:506)
可以看到当前的线程是一个TaskQueue的监听应用。
Arthas里面默认就按照了Jad,可以直接对上面的类进行代码反汇编。比如输入下面的代码
jad java.util.TaskQueue
其输出如下:
我们看到Java Class字节码是可以反编译的。查看类里面的方法:
sm java.util.TaskQueue
输入quit 或者exit 推出 arthas
[arthas@5336]$ quit
E:\\2022-Learning>
值得一提的是,可以直接输入 http://127.0.0.1:8563/ 进入Arthas的Web控制台,使用方式和命令行一模一样~
以上是关于[12]深入浅出工作开源框架Camunda: 使用Arthas监控Camunda的主要内容,如果未能解决你的问题,请参考以下文章
[5]深入浅出工作开源框架Camunda: 解读 camunda-webapp 笔记
[3] 深入浅出工作开源框架Camunda: Camunda 切换到MySQL数据库
[2]深入浅出工作开源框架Camunda: Camunda Modeler功能增强插件