java的Arthas命令有哪些


本篇内容介绍了“java的Arthas命令有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱(截止2020.9.19 github star是23K)。通过Arthas我们可以在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。实时查看系统的运行状况查看函数调用的参数,返回值和异常代码在线热更新秒解类冲突问题,定位类加载路径快速定位应用的热点,生成火焰图在线诊断,点开网页诊断线上应用当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?有什么办法可以监控到JVM的实时运行状态?怎么快速定位应用的热点,生成火焰图?下载arthas-boot.jar,然后用java -jar的方式启动:本文的示例项目是运行在docker,因此就采用了另外的方式不过在执行的过程中,可能会出现解决方案如下help(查看命令帮助信息)会列这个命令,源于个人习惯吧。每当学习一个新东西,都会习惯看下帮助,通读一下 当你想了解具体命令的详细用法,以thread为例,输入 就会有详细的thread参数、例子介绍。感觉本文的精华就是这个了,毕竟你想要其他命令,直接但为了水文,就再介绍几类命令dashboard(实时展示当前系统诸如线程、内存占用、GC等信息的面板,默认每个5秒刷新一下面板:按ctrl+c可以退出面板jvm(查看当前JVM信息比如gc回收次数以及耗时等)thread(查看当前线程信息,查看线程的堆栈a、 查看当前最忙的前N个线程并打印堆栈 上述的命令实现的效果就和我们以往输入类似b、 thread -b, 找出当前阻塞其他线程的线程注: 目前只支持找出synchronized关键字阻塞住的线程, 如果是java.util.concurrent.Lock, 目前还不支持c、 thread –state ,查看指定状态的线程logger(查看logger信息,更新logger level3.1、 查看logger信息 3.2、 动态更新logger level修改日志级别步骤a、 查找当前类的classloader hashcodeb、 用OGNL获取logger 香港云主机从上图可以知道com.example.springdemo.user.service.impl.UserServiceImpl@log实际使用的是logback。 可以看到level=null,则说明实际最终的level是从root logger里来的。c、 单独设置UserServiceImpl的logger level 把日志级别变更为warn 可以看出日志级别已经改为warnjad(反编译指定已加载类的源码)sc(查看JVM已加载的类信息)mc(内存编译器,编译.java文件生成.class)redefine(加载外部的.class文件,redefine jvm已加载的类)为啥介绍这几个,因为这几个组合起来就可以实现动态在线更新代码了。其步骤如下a、jad反编译要更新的代码b、sc查找加载要更新代码的ClassLoaderc、保存好/tmp/UserServiceImpl.java之后,使用mc(Memory Compiler)命令来编译,并且通过–classLoaderClass参数指定ClassLoaderd、使用redefine命令重新加载新编译好的UserServiceImpl.classmonitor(方法执行监控,可以监控方法的调用次数、成功次数、失败次数、平均响应时间、失败)注: 这是一个非实时返回命令,统计周期,默认值为120秒watch(观察指定方法的调用情况。能观察到的范围为:返回值、抛出异常、入参) watch参数说明 trace(方法内部调用路径,并输出方法路径上的每个节点上耗时)注: trace 能方便的帮助你定位和发现因 RT 高而导致的性能问题缺陷,但其每次只能跟踪一级方法的调用链路。stack(输出当前方法被调用的调用路径)tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)这个命令的厉害之处在于记录下当前方法的每次调用环境现场,并能进行重放 b、选择一个index进行重放:这些监控命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行 stop 或将增强过的类执行 reset 命令。“java的Arthas命令有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!

相关推荐: 怎么使用Elasticsearch中的Span Query

本篇内容介绍了“怎么使用Elasticsearch中的Span Query”的有关知识,在实际案例的操作 香港云主机过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Span查询是低级的位置查询…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/26 11:52
下一篇 08/27 09:57

相关推荐