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]$ 
查找需要使用的classLoader
复制代码
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)

 

posted @   ck_2016  Views(218)  Comments(0Edit  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示