| 
                         tsar --live ###可以查看实时指标,默认五秒一刷 
  
- tsar --mem 
 - tsar --load 
 - tsar --cpu 
 - ###当然这个也可以和-d参数配合来查询某天的单个指标的情况  
 
  
  
tsar --memtsar --loadtsar --cpu###当然这个也可以和-d参数配合来查询某天的单个指标的情况 
  
  
  
top 
top除了看一些基本信息之外,剩下的就是配合来查询vm的各种问题了 
- ps -ef | grep java 
 - top -H -p pid 
 
  
获得线程10进制转16进制后jstack去抓看这个线程到底在干啥 
其他 
- netstat -nat|awk '{print $6}'|sort|uniq -c|sort -rn #查看当前连接,注意close_wait偏高的情况,比如如下 
 
  
  
  
 
排查利器 
btrace 
首当其冲的要说的是btrace。真是生产环境&预发的排查问题大杀器。 简介什么的就不说了。直接上代码干 
1、查看当前谁调用了ArrayList的add方法,同时只打印当前ArrayList的size大于500的线程调用栈 
- @OnMethod(clazz = "java.util.ArrayList", method="add", location = @Location(value = Kind.CALL, clazz = "/.*/", method = "/.*/")) 
 - public static void m(@ProbeClassName String probeClass, @ProbeMethodName String probeMethod, @TargetInstance Object instance, @TargetMethodOrField String method) { 
 -    if(getInt(field("java.util.ArrayList", "size"), instance) > 479){ 
 -        println("check who ArrayList.add method:" + probeClass + "#" + probeMethod  + ", method:" + method + ", size:" + getInt(field("java.util.ArrayList", "size"), instance)); 
 -        jstack(); 
 -        println(); 
 -        println("==========================="); 
 -        println(); 
 -    } 
 - } 
 
  
2、监控当前服务方法被调用时返回的值以及请求的参数 
- @OnMethod(clazz = "com.taobao.sellerhome.transfer.biz.impl.C2CApplyerServiceImpl", method="nav", location = @Location(value = Kind.RETURN)) 
 - public static void mt(long userId, int current, int relation, String check, String redirectUrl, @Return AnyType result) { 
 -    println("parameter# userId:" + userId + ", current:" + current + ", relation:" + relation + ", check:" + check + ", redirectUrl:" + redirectUrl + ", result:" + result); 
 - } 
 
  
更多内容,感兴趣的请移步:https://github.com/btraceio/btrace 
                        (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |