深度解析阿里Arthas:从入门到精通,掌握Java应用问题排查利器

本篇带给大家Arthas的一些常用命令,可以帮助开发者快速定位和解决JAVA应用中的问题 。当然,Arthas还有许多其他的功能和命令,这里只是介绍了一部分 。

深度解析阿里Arthas:从入门到精通,掌握Java应用问题排查利器

文章插图
Arthas是阿里开源的一款Java诊断工具,支持在线排查Java应用问题 。它能够帮助Java开发者快速定位并解决生产环境中的各种问题,例如性能问题、死锁问题、内存泄漏问题等 。
以下是Arthas教程的详细介绍,包括每个使用知识点的实例命令和输出:
1、安装Arthas首先需要下载Arthas并安装,具体操作可以参考Arthas的官方文档 。
2、连接目标Java进程在Arthas安装完成后,使用以下命令连接目标Java进程:
$ java -jar arthas-boot.jar$ attach PID其中,PID是目标Java进程的进程ID 。
输出:
成功连接到目标Java进程 。
3、查看Java类信息使用以下命令可以查看Java类的信息:
  • 查看类名:
$ class com.example.demo.DemoController输出:
class com.example.demo.DemoController
  • 查看类的所有方法:
$ method com.example.demo.DemoController输出:
com.example.demo.DemoControllerpublic java.lang.String com.example.demo.DemoController.hello(java.lang.String)public void com.example.demo.DemoController.handleException()
  • 查看类的所有属性:
$ field com.example.demo.DemoController输出:
com.example.demo.DemoControllerprivate static final org.slf4j.Logger com.example.demo.DemoController.logger4、监控Java方法使用以下命令可以监控Java方法的执行情况:
  • 监控指定方法的执行情况:
$ monitor -c 5 com.example.demo.DemoController hello其中,-c 5表示监控5次方法执行情况,
com.example.demo.DemoController表示类名,hello表示方法名 。
输出:
Monitoring com.example.demo.DemoController#hello for 5 times, interval: 1s, timeout: 300s.Press Ctrl+C to abort.Execution count: 1, Total cost: 43.291 ms, Avg cost: 43.291 ms, Min cost: 43.291 ms, Max cost: 43.291 ms, Exception count: 0, TPS: 23.13/sExecution count: 2, Total cost: 41.117 ms, Avg cost: 41.117 ms, Min cost: 41.117 ms, Max cost: 41.117 ms, Exception count: 0, TPS: 24.36/sExecution count: 3, Total cost: 39.304 ms, Avg cost: 39.304 ms, Min cost: 39.304 ms, Max cost: 39.304 ms, Exception count: 0, TPS: 25.42/sExecution count: 4, Total cost: 41.825 ms, Avg cost: 41.825 ms, Min cost: 39.304 ms, Max cost: 43.291 ms, Exception count: 0, TPS: 23.91/sExecution count: 5, Total cost: 42.246 ms, Avg cost: 49.2 ms, Min cost: 39.304 ms, Max cost: 83.554 ms, Exception count: 0, TPS: 24.44/s
  • 监控所有方法的执行情况:
$ monitor -c 5 com.example.demo.DemoController其中,-c 5表示监控5次方法执行情况,
com.example.demo.DemoController表示类名 。
输出:
Monitoring com.example.demo.DemoController for 5 times, interval: 1s, timeout: 300s.Press Ctrl+C to abort.Execution count: 2, TPS: 1.0/sExecution count: 2, TPS: 1.0/sExecution count: 2, TPS: 1.0/sExecution count: 2, TPS: 1.0/sExecution count: 2, TPS: 1.0/s5、查看Java线程信息使用以下命令可以查看Java线程的信息:
  • 查看当前所有线程:
$ thread输出:
IdGroupStateName 1mainRUNNABLE... 2mainWAITING... 3mainTIMED_WAITING ... 4mainBLOCKED...
  • 查看指定线程的信息:
$ thread 1其中,1表示线程ID 。
输出:
Thread[main,5,main]java.lang.Object.wait(Native Method)java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)6、查看Java内存信息使用以下命令可以查看Java内存的信息:
  • 查看当前Java进程的内存情况:
$ jvm输出:
Class Loaders: 7Loaded Classes: 13198Total Classes: 13241Heap Memory Usage: init:2621440, used:32950664, committed:54525952, max:3715249152Non-Heap Memory Usage: init:2555904, used:49171920, committed:51773440, max:-1