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

  • 相关阅读:
    mirco新建proto流程
    Ubuntu默认防火墙安装、启用、配置、端口、查看状态相关信息
    Rails核心组件
    Ruby中文乱码问题
    python str转dict
    SQLserver AwaysOn日志文件过大,处理办法
    MySQL的一些小细节
    mysql删除表中重复值
    可恶的自增长标识符
    reset slave all更彻底
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/4221428.html
Copyright © 2011-2022 走看看