一篇关于Java线上故障解决方案(四)

开课吧开课吧锤锤2021-04-08 09:59

点赞
有用
分享分享

    Java编程语言是一种简单、面向对象、分布式、解释型、健壮安全、与系统无关、可移植、高性能、多线程和动态的语言。如今Java已经广泛应用于各个领域的编程开发。

Java

    三、Arthas诊断命令

Java

    Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。

    当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

    这个类从哪个jar包加载的?为什么会报各种类相关的Exception?

    我改的代码为什么没有执行到?难道是我没commit?分支搞错了?

    遇到问题无法在线上debug,难道只能通过加日志再重新发布吗?

    线上遇到某个用户的数据处理有问题,但线上同样无法debug,线下无法重现!

    是否有一个全局视角来查看系统的运行状况?

    有什么办法可以监控到JVM的实时运行状态?

    怎么快速定位应用的热点,生成火焰图?

    安装

 [root ~]# mkdir arthas
 [root ~]# cd arthas/
 [root ~]#  wget https://maven.aliyun.com/repository/public/com/taobao/arthas/arthas-packaging/3.1.4/arthas-packaging-3.1.4-bin.zip
 [root ~]# rm -rf /home/admin/.arthas/lib/*
 [root ~]# cd arthas
 [root ~]# ./install-local.sh
 [root ~]# java -jar arthas-boot.jar

Java

    arthas会列出已存在的Java进程,并提醒输⼊序号,键⼊回⻋,进⼊arthas诊断界⾯。

    arthas常⻅命令介绍

    jvm查看当前JVM的信息

    thread查看当前JVM的线程堆栈信息,-b选项可以⼀键检测死锁

    trace⽅法内部调⽤路径,并输出⽅法路径上的每个节点上耗时,服务间调⽤时间过⻓时使⽤

    stack输出当前⽅法被调⽤的调⽤路径

    Jad反编译指定已加载类的源码,反编译便于理解业务

    logger查看和修改logger,可以动态更新⽇志级别。

    以上内容由开课吧老师ゞ浪人与酒丶提供,更多Java教程尽在开课吧广场Java教程频道。

有用
分享