Arthas:在线 Java 诊断工具

Posted by agentd on 03-16,2020

你还在为加一条 debug 日志就要重发应用而烦恼吗?

Arthas 是 Alibaba 开源的 Java 诊断工具。

安装启动

登录对应服务器执行(不建议在线上机器使用,会有性能问题

wget https://alibaba.github.io/arthas/arthas-boot.jar && java -Dfile.encoding=UTF-8 -jar arthas-boot.jar

命令 demo

查看方法返回结果

## 查看 MorecControlFlow 类的 process 方法返回结果
## process 方法第一个参数的 momoId 属性值为 “668071814” 才生效
watch com.immomo.recommendation.MorecControlFlow process 'returnObj' 'params[0].momoId=="668071814"'

# ts=2019-03-18 21:09:46; [cost=264.434972ms] result=@Boolean[true]


## 查看 IMorecShuffler 类的 shuffle 抛的异常
## process 方法第一个参数的 momoId 属性值为 “668071814” 才生效
watch com.immomo.recommendation.plugins.shuffler.IMorecShuffler shuffle 'throwExp' 'params[0].morecRequest.momoId=="668071814"'

# ts=2019-03-27 20:54:29; [cost=46.642339ms] result=java.lang.IndexOutOfBoundsException: Index: 12, Size: 11
	at java.util.ArrayList.rangeCheckForAdd(ArrayList.java:665)
	at java.util.ArrayList.add(ArrayList.java:477)
	at com.immomo.nearby.feed.recommend.moa.plugin.loader.young_verson.RoomUtil.rateFixMixRoomData(RoomUtil.java:235)
	at com.immomo.nearby.feed.recommend.moa.plugin.shuffler.EsNearbyPlayMixRoomShuffler.shuffle(EsNearbyPlayMixRoomShuffler.java:187)
	at com.immomo.nearby.feed.recommend.moa.plugin.shuffler.EsNearbyPlayMixRoomShuffler.shuffle(EsNearbyPlayMixRoomShuffler.java:45)

参考链接

Arthas watch 命令 https://alibaba.github.io/arthas/watch.html