Arthas排查spring boot问题的案例。
为了Clone更快和演示更方便,对@断岭原工程的示例代码进行了部分修改和整合。
打个广告,Arthas正在征集使用者,您的使用是对我们最大的支持。 如果Arthas对您排找问题有帮助,请到这里来登记下,并在30分钟内成为Arthas Contributor:
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
dashboard
找出当前最繁忙的top3线程,取样间隔为1秒
thread -n 3 -i 1000
展示Classloader信息
classloader -t
展示类加载信息
sc -d java.lang.String
sc -d -f -x 2 com.taobao.arthas.demo.web.UserController
监控方法调用人参/异常值
watch com.taobao.arthas.demo.web.UserController * '{params[0], throwExp}' 'true'
监控方法调用栈,统计调用时间
trace com.taobao.arthas.demo.web.UserController findUserById2 > trace.log
反编译
jad --source-only com.taobao.arthas.demo.web.UserController > UserController.java
内存编译器
mc UserController.java
热更新
redefine -c 18b4aac2 ${CLASS_PATH}
查看LOGGER实现类
ognl '@com.taobao.arthas.demo.web.UserController@LOGGER'
动态修改LOGGER LEVEL
ognl '@com.taobao.arthas.demo.web.UserController @LOGGER.setLevel(@ch.qos.logback.classic.Level@DEBUG)'
获取加载的日志配置文件
ognl '#[email protected]@getLogger("root").loggerContext.objectMap, #map1.get("CONFIGURATION_WATCH_LIST")'