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

  • 相关阅读:
    java抽象类怎么实例化了及C++中抽象类的构造函数
    树及其遍历
    C++中类的多态与虚函数的使用
    C++中#if #ifdef 的作用
    用链表实现两大数相乘
    C++中的链表类的设计
    IPicture总结
    c++标准库中,含有链表的类list
    TCP/IP、Http的区别
    C语言单链表实现19个功能完全详解
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/4221428.html
Copyright © 2011-2022 走看看