标签:
在访问页面请求的时候,如果系统执行效率低,我们怎样才能定位到这些页面请求呢?
java 有一个十分有效的动态跟踪工具—btrace 网址:https://kenai.com/projects/btrace/downloads
比如希望定位我们的控制器代码哪些方法慢:
1.我们可以编写如下类:
package demo;
import com.sun.btrace.annotations.BTrace;   
import com.sun.btrace.annotations.Kind;    
import com.sun.btrace.annotations.Location;    
import com.sun.btrace.annotations.OnMethod;    
import com.sun.btrace.annotations.TLS;    
import static com.sun.btrace.BTraceUtils.*;
   
@BTrace    
public class BtraceTest {    
    
    @TLS    
    private static long starttime;
    
    @OnMethod(clazz="/com\\.hotent\\..*\\..*\\.controller\\..*/",method="/.+/",location=@Location(Kind.ENTRY))    
    public static void startExecute(){    
        starttime=timeMillis();    
    }    
    
    @OnMethod(clazz="/com\\.hotent\\..*\\..*\\.controller\\..*/",method="/.+/",location=@Location(Kind.RETURN))    
    public static void endExecute(){    
        long timeCost=timeMillis()-starttime;    
        
        print(strcat(strcat(name(probeClass()), "."), probeMethod()));    
        
        print(strcat(",time taken:" , str(timeCost)));    
        
        println("]");    
    }    
}
2.使用jps 查看应用服务器进程。
其中8512就是我们的tomcat进程。
3.将刚才的代码copy到 btrace 下载目录。
4.执行命令如下
btrace.bat -cp bulid 8512 demo/BtraceTest.java
5.执行效果如下:
访问页面控制台将会打印每个控制器方法的执行时间。
标签:
原文地址:http://www.cnblogs.com/yg_zhang/p/4221428.html