暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Arthas在性能测试中的常用功能

全栈测试笔记 2021-06-29
1781

点击蓝色“全栈测试笔记”关注我哟

加个“星标”,阅读我的文章,一起学习提升。

简介

Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连接运行的Java进程、主要通过交互式来完成功能。下面总结下工作中经常用到的功能。

运行

在执行java -jar arthas-boot.jar前,务必先保证有java进程在运行
 选择要粘附的进程,输入编号即可,下面输入3后,光标前面显示[arthas@进程号]
也可以通过浏览器连接arthas,只是执行命令(java -jar arthas-boot.jar)的时候需要加--target-ip参数

dashboard

查看线程,内存,GC等信息

thread

显示粘附的这个进程所有线程信息,和dashboard里面展示的线程一样
thread -n 3,最繁忙的3个线程(占用cpu最多的前3个),输出栈信息
thread n,查看某个指定的线程,输出栈信息
thread -b,输出阻塞的线程栈信息,如果响应慢,阻塞状态的线程比较多,我们需要重点关注,关于线程的状态如何分析,后续再分享。
thread |grep BLOCKED,找出阻塞状态的线程,下面看到有2个
thread --state BLOCKED和上面等价
说明: 下面是服务重启了,所以进程号和上面不一样

jvm

重点关注下死锁(DEADLOCK-COUNT,下面不为0,表示有死锁),jvm相关的,用其它的监控方式(见文末截图)
根据下面的栈信息,可以看到,线程15和线程16互相请求被对方占用未释放的资源导致了死锁

jad

如果没有代码权限,可以使用反编译功能,反编译指定的类或者方法
jad com.qzcsbj.controller.UserController mem,反编译指定方法,除了展示代码(演示代码未截全),还展示了类加载器的信息
jad com.qzcsbj.controller.UserController,反编译指定的类,除了展示代码演示代码未截全,还展示了类加载器的信息
jad --source-only com.qzcsbj.controller.UserController,不显示类加载器信息,只显示代码演示代码未截全

sc

Search Class,查看类信息(也可以用jad)
sc com.qzcsbj.*,可以模糊的方式
sc -d com.qzcsbj.controller.UserController,根据上图结果,我们来查看类的详细信息
下面可以看到类的路径、修饰符、注解、父类、类加载器
sc -df com.qzcsbj.controller.UserController,查看类的filed,可以看到其名称、类型、修饰符

sm

Search Method,查看方法(也可以用jad
sm -d com.qzcsbj.controller.UserController mem,显示方法的详情:修饰符、注解、参数、返回类型

trace

跟踪方法内部调用,输出各个节点的耗时,主要用于响应慢的时候,这个命令非常实用
trace com.qzcsbj.controller.UserController m,找到耗时多的方法(下面标红的),然后我们就可以分析代码,看在执行什么操作了,下面会按调用的层次关系列出调用栈
trace com.qzcsbj.controller.UserController m -n 2,一般需要输出多次结果,所以这里可以通过-n指定结果数量
trace com.qzcsbj.controller.UserController m '#cost>1000',如果输出结果次数比较多,我们还可以对耗时进行过滤

monitor以及tt

监控方法的执行情况
monitor com.qzcsbj.controller.UserController m -c 2,重点看成功次数、平均响应时间、失败率
和tt类似,下面关注:耗时、IS-RET为false表示失败

watch

类似debug,查看被测方法的参数和返回值
watch com.qzcsbj.controller.UserController login '{params, returnObj}' -x 2,其中-x表示深度
入参是qzcsbj、123456,返回是msg、code

profiler(火焰图)

系统cpu高的时候,我们可以看系统调用,相比于perf命令,profiler的步骤要更简单点,
profiler start,启动,默认是生成cpu的火焰图,which event to trace (cpu, alloc, lock, cache-misses etc.), default value is cpu
profiler stop,停止,可以看到生成的svg文件路径
然后通过浏览器访问,点击右上角"Arthas Output"
展示svg,点击要查看的即可
关于如何看火焰图,我们是看顶层最宽的,看内核在做什么操作。

补充

在做性能测试的时候,针对java应用,单纯靠arthas是不够的,下面这些知识也需要掌握,建议大家自己梳理。

jvm

tomcat


咨询交流,添

抛砖引玉,欢迎交流;
声明:封面图片来源于网络,如有侵权,请联系删除。

END


长按二维码关注,第一时间获取干货

热文推荐

点击阅读☞(测试方向)2021测试行情分析及建议

点击阅读☞(测试干货)2019-2020:测试实用干货精选汇总

点击阅读☞(学习必备)你还差一台云服务器

点击阅读☞(升职加薪)提升自己才是硬道理


星标|在看|留言|转发分享,铁粉


未来的你,一定会感谢现在拼命努力的自己!

文章转载自全栈测试笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论