本文使用: Arthas 3.6.x
官方文档: http://arthas.gitee.io/

本地监控

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar --repo-mirror aliyun --use-http

docker内应用监控

docker exec -it ${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"

监控代码执行

# 单个方法监控
trace --skipJDKMethod false com.lc.ibps.cloud.oauth.server.provider.UserProvider login
# 控制打印次数,默认6次
trace --skipJDKMethod false com.lc.ibps.cloud.oauth.server.provider.UserProvider login -n 20
# 多个类多个方法监控
trace --skipJDKMethod false -E com.lc.ibps.base.db.mybatis.MybatisTemplateProvider|org.apache.ibatis.session.defaults.DefaultSqlSession selectList|update|execute -n 1000
# 单个方法统计每次耗时
tt -t -E com.lc.ibps.base.db.mybatis.MybatisTemplateProvider execute
# 控制打印次数,默认3次
tt -t -E com.lc.ibps.base.db.mybatis.MybatisTemplateProvider execute -n 100
# # 多个类多个方法监控
tt -t -E com.lc.ibps.base.db.mybatis.MybatisTemplateProvider|org.apache.ibatis.session.defaults.DefaultSqlSession selectList|update|execute -n 1000

定位耗时较高的方法,分析该方法是否有提升空间

线上查看入参与返回值

# 查看入参
watch com.lc.ibps.form.provider.DataTemplateProvider exportDataNew 'params' -x 3
# 查看入参与返回值
watch com.lc.ibps.form.helper.DataTemplateExportHelper getEntityList '{params,returnObj}' -x 3

火焰图

profiler start --duration 360

分析火焰图,定位哪些代码消耗CPU较高,分析代码如何优化

文档更新时间: 2023-08-25 08:45   作者:Eddy