zoukankan      html  css  js  c++  java
  • 使用BTRACE定位系统中慢的问题

    在访问页面请求的时候,如果系统执行效率低,我们怎样才能定位到这些页面请求呢?

     

    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 查看应用服务器进程。

    image

    其中8512就是我们的tomcat进程。

     

    3.将刚才的代码copy到 btrace 下载目录。

    image

     

    4.执行命令如下

     

    btrace.bat -cp  bulid 8512 demo/BtraceTest.java

    5.执行效果如下

    访问页面控制台将会打印每个控制器方法的执行时间。

    image

  • 相关阅读:
    常见动态规划题目详解
    回溯法常见题目总结
    AWK语法入门
    JavaScript深拷贝—我遇到的应用场景
    git代码版本回退
    Rem实现移动端适配
    Weex了解
    Vue.js入门学习
    今日小结—304状态码,数组去重
    js今日小结—Ajax、前端安全、GET&POST、闭包、HTTPS
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/4221428.html
Copyright © 2011-2022 走看看