Arthas在我工作中的应用

关于Arthas的文章介绍网络上很多,我这篇也不是最后一篇,我只是记录一下自己使用的一些操作和心得.
访问官网的文档比较慢,这里提供一个官网的另一个访问较快的文档链接地址

进入正题
前提是你的服务器已经安装了Arthas环境(即服务器上已经有了它的jar包)

有时候我们写的类或者方法,部署在服务器上之后,突然测试同学过来对你说"小老弟,你说的那个功能我测试了,不行啊",这个时候,你心里十万个草泥马"不可能啊,我在开发环境测试都是好好的,咋就到了主干环境不行了呢".
这个时候我们可以通过Arthas提供的命令帮助我们查看类或者方法是否存在.
关于如何进入Arthas环境这里也不做介绍

比如所我们提供的类名叫做QueryOrderService类, 但是呢具体名字一下子忘记了,也不要紧

sc *Order*

通过以上命令我们就可以查看到服务器上是否存在这个类,如果不存在那就是部署或者分支上的问题了.
如果我们要查看在QueryOrderService类中提供的queryList方法是否存在,根据上面的命令我们已经知道了QueryOrderService类的全路径名(或者你直接从你的代码里拷贝出来这个类的全路径名),然后执行

sm com.infuq.QueryOrderService

会列出来这个类中的全部方法,如果列出来的方法中不存在你提供的方法,那就是部署或者分支上的问题了.

在日常开发中,两个模块之间基本都是通过Dubbo调用,那么这个时候,我要查看自己的模块调用别人的模块的某个方法的入参和返回值. 当然如果有日志文件的话,你可以直接通过服务器上的日志文件查看.当然你也可以通过Arthas提供的watch命令查看方法的入参和出参.

比如这里我们通过watch查看调用别人dubbo接口的入参和出参.

watch com.infuq.QueryOrderService queryList "{params,returnObj}" -x 3

com.infuq.QueryOrderService 是别人提供的Dubbo接口
queryList 是别人提供的方法
"{params,returnObj}" 展示入参和出参
-x 3 表示展示3层

具体命令说明

日常工作中,比如压测的时候,我也会根据thread命令查看服务器上的线程状态等.

总之Arthas是一个不错的工具,让我们在排查问题上多了一个看待问题的角度.


个人站点
语雀

公众号

微信公众号

你可能感兴趣的:(其他)