使用arthas 分析java 应用的一个流程总结
arthas 是阿里巴巴开源的一个java 应用分析利器,但是很多时候我们在碰到一个陌生系统需要进行性能优化的时候会有好多不知道如何下手的问题,以下是自己的一些实践总结
整体了解系统运行以及框架的
这类还好,我们可以通过项目的代码结构,通过sc 查找相关的类然后通过trace,stack 以及watch ,jad等命令可以分析
同时thread 是一个很不错的命令,可以知道系统的线程情况,一般可以先dashboard 了解系统情况,然后thread,之后进行trace,stack,以及watch 等操作
对于黑盒系统
优先使用火焰图(profiler),火焰图很不错,对于陌生系统是把利器,可以用来查看系统内部的运行情况(调用链)
有了调用链以及,可以找到的消耗大的方法,我们就可以结合trace 以及watch 分析了,这样就可以方便的找出有异常的bug或者有异常的请求链路,同时结合jad 进行源码的发编译,查看可能的问题
说明
以上是一个简单的总结,以下是几个常用的命令
trace class method // 查看调用链
watch class method '{params,returnObj}' -x 5 // 查看方法的输入以及输出
thread // 查看线程信息
profiler start // 开启火焰图
dashboard 了解系统当前的整体情况