Arthas 使用
1 调用bean中的某个方法:
#抓取 'io.dropwizard.metrics5.ScheduledReporter.report()'
tt -t io.dropwizard.metrics5.ScheduledReporter report params.length==0 -n 1
#tt列表查看
[arthas@1463]$ tt -l INDEX TIMESTAMP COST(ms) IS-RET IS-EXP OBJECT CLASS METHOD --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1000 2022-03-04 19:44:24 66.333827 true false 0x35edfcef GarbageFreeScheduledReporter report 1001 2022-03-04 19:58:21 214.109877 true false 0x46ae7821 GarbageFreeScheduledReporter report 1002 2022-03-04 19:58:21 215.242145 true false 0x46ae7821 InfluxDbReporter report 1003 2022-03-04 20:07:07 8.364167 true false 0x69ff4845 GarbageFreeScheduledReporter report Affect(row-cnt:4) cost in 1 ms.
#查看当前target
[arthas@1463]$ tt -i 1000 -w 'target' @HickwallUDPReporter[ logger=@DefaultLogger[com.xxx.framework.foundation.internals.logger.DefaultLogger@2a638bfe], DEFAULT_IDC=@String[DEFAULT-IDC], LOGGER=@Logger[Logger[io.dropwizard.metrics5.influxdb.InfluxDbReporter]], VALUE=@String[value], clock=@UserTimeClock[io.dropwizard.metrics5.Clock$UserTimeClock@927d5c], sender=@InfluxDbUdpSender[io.dropwizard.metrics5.influxdb.InfluxDbUdpSender@36244462], builder=@InfluxDbLineBuilder[io.dropwizard.metrics5.influxdb.InfluxDbLineBuilder@61b7166e], registry=@MetricRegistry[io.dropwizard.metrics5.MetricRegistry@57bd4ddd], mirror=@RegistryMirror[io.dropwizard.metrics5.influxdb.GarbageFreeScheduledReporter$RegistryMirror@4456b2eb], LOG=@Logger[Logger[io.dropwizard.metrics5.ScheduledReporter]], FACTORY_ID=@AtomicInteger[3], registry=@MetricRegistry[io.dropwizard.metrics5.MetricRegistry@57bd4ddd], executor=@DelegatedScheduledExecutorService[java.util.concurrent.Executors$DelegatedScheduledExecutorService@5045e957], shutdownExecutorOnStop=@Boolean[true], disabledMetricAttributes=@RegularEnumSet[isEmpty=false;size=7], scheduledFuture=@ScheduledFutureTask[java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@45c6db93[Not completed, task = java.util.concurrent.Executors$RunnableAdapter@9188157[Wrapped task = io.dropwizard.metrics5.ScheduledReporter$1@34f6f60c]]], filter=@[io.dropwizard.metrics5.MetricFilter$1@3ab69d2d], durationFactor=@Long[1000000], durationUnit=@String[milliseconds], rateFactor=@Long[1], rateUnit=@String[second], ]
#调用bean 中的stop()方法
tt -i 1000 -w 'target.stop()'
2. 调用静态方法

[arthas@4999]$ classloader -t +-BootstrapClassLoader +-java.net.URLClassLoader@290c8299 +-javax.management.remote.rmi.NoCallStackClassLoader@12f40c25 +-javax.management.remote.rmi.NoCallStackClassLoader@50675690 +-org.codehaus.groovy.runtime.callsite.CallSiteClassLoader@9ec3ea7 +-org.codehaus.groovy.runtime.callsite.CallSiteClassLoader@4b73612e +-sun.misc.Launcher$ExtClassLoader@66d1af89 +-com.taobao.arthas.agent.ArthasClassloader@3c5c2b7b +-sun.misc.Launcher$AppClassLoader@18b4aac2 +-java.net.FactoryURLClassLoader@1e5a1f98 +-java.net.URLClassLoader@35851384 | +-com.baidu.bjf.remoting.protobuf.utils.compiler.JdkCompiler$ClassLoaderImpl@12c16acd | +-lombok.launch.ShadowClassLoader@4a84526 | +-org.codehaus.groovy.reflection.SunClassLoader@15acdfa8 /////////////////////////// 要找的loader | +-org.codehaus.groovy.runtime.callsite.CallSiteClassLoader@5ecc0608 | +-org.codehaus.groovy.runtime.callsite.CallSiteClassLoader@3ca37487 | +-org.codehaus.groovy.runtime.callsite.CallSiteClassLoader@6609cda5 | +-org.codehaus.groovy.runtime.callsite.CallSiteClassLoader@5c0a75fa | +-org.codehaus.groovy.runtime.callsite.CallSiteClassLoader@588405f2 +-java.net.URLClassLoader@79139cae +-sun.reflect.misc.MethodUtil@4e2cd5a9 Affect(row-cnt:22) cost in 17 ms. [arthas@4999]$
ognl -c 3a3d901b '@com.ctrip.hotel.search.common.utility.pool.StringBuilderPoolUtils@pool.getNumActive()' ognl -c 3a3d901b '@com.ctrip.hotel.search.common.utility.pool.StringBuilderPoolUtils@pool.getNumIdle()'
转自:
https://arthas.aliyun.com/doc/tt.html (官方手册)
https://github.com/alibaba/arthas/issues/482 (Alibaba Arthas实践--获取到Spring Context)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)