使用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="/.+/",[email protected](Kind.ENTRY))
    public static void startExecute(){
        starttime=timeMillis();
    }
   
    @OnMethod(clazz="/com\\.hotent\\..*\\..*\\.controller\\..*/",method="/.+/",[email protected](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.执行效果如下

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

时间: 2025-01-18 04:56:17

使用BTRACE定位系统中慢的问题的相关文章

5 个在 Linux 中管理文件类型和系统时间的有用命令

对于想学习 Linux 的初学者来说要适应使用命令行或者终端可能非常困难.由于终端比图形用户界面程序更能帮助用户控制 Linux 系统,我们必须习惯在终端中运行命令.因此为了有效记忆 Linux 不同的命令,你应该每天使用终端并明白怎样将命令和不同选项以及参数一同使用. 在 Linux 中管理文件类型和设置时间 请先查看我们 Linux 小技巧系列之前的文章: 5 个有趣的 Linux 命令行技巧 给新手的 10 个有用 Linux 命令行技巧 在这篇文章中,我们打算看看终端中 5 个和文件以及

btrace一些你不知道的事(源码入手)

背景 周五下班回家,在公司班车上觉得无聊,看了下btrace的源码(自己反编译). 一些关于btrace的基本内容,可以看下我早起的一篇记录:btrace记忆 上一篇主要介绍的是btrace的一些基本使用以及api,这里我想从btrace源码本身进行下介绍.至于btrace的优势,能用来干些什么,自己上他的官网看下或者google一下,花个半小时就能明白了. 至于为什么会去反编译查看btrace源码,主要是会在部门整个关于btrace的分享.同时btrace的相关技术文档缺乏,javadoc很多

BTrace介绍和生产环境例子

一/简单介绍 BTrace 是一个可靠的,用来动态跟踪Java程序的工具.它通过动态对运行中的Java程序进行字节码生成来工作.BTrace会对运行中的Java程序的类插入一些跟踪操作 来对被跟踪的程序进行热替换. BTrace 名词 探测点 (Probe Point) 就是一系列的跟踪语句被执行的"地方"或者"事件".探测点就是我们想要执行一些跟踪语句的地方或者事件. 跟踪动作或简称动作 (Trace Actions) 就是那些当探测点被触发时所执行的跟踪语句.

巧用浏览器F12调试器定位系统前后端bug

做测试的小伙伴可能用过httpwatch,firebug,fiddler,charles等抓包(数据包)工具,但实际上除了这些还有一个简单实用并的抓包工具,那就是浏览器的F12调试器. httpwatch,firebug都是浏览器的插件,需要额外下载,fiddler,charles也需要额外下载安装包另行安装,但是浏览器F12调试器却是所有浏览器内置的调试器,不需要大家额外去安装的,打开它只是一个顺手的事情,而且它提供的功能也比较强大,因此如果在开发或者测试web系统的时候,我们可以先考虑使用这

Btrace使用教程

下载 下载链接:https://github.com/btraceio/btrace/releases/tag/v1.3.9 安装及环境配置 1.下载一个压缩包 2.解压 3.配置环境变量 sudo vi /etc/profile 添加 export BTRACE\_HOME=/home/josonliu/btrace export PATH=$PATH:$BTRACE\_HOME/bin PS:BTRACE\_HOME必须是你解压的路径 4.使配置生效 source /etc/profile

BTrace 动态追踪技术

直接操作字节码 Java是软件开发人员能读懂的语言,class字节码是JVM能读懂的语言,class字节码最终会被JVM解释成机器能读懂的语言.无论哪种语言,都是人创造的.所以,理论上(实际上也确实如此)人能读懂上述任何一种语言,既然能读懂,自然能修改.只要我们愿意,我们完全可以跳过Java编译器,直接写字节码文件,只不过这并不符合时代的发展罢了,毕竟高级语言设计之始就是为我们人类所服务,其开发效率也比机器语言高很多. 对于人类来说,字节码文件的可读性远远没有Java代码高.尽管如此,还是有一些

基于 WiFi 的室内定位技术

系统的拓扑结构 基于信号强度的定位技术(RSSI) 无线信号的信号强度随着传播距离的增加而衰减,接收方与发送方离得越近, 则接收方的信号强度就越强:接收方离发送方越远,则接收到的信号强度就越弱. 根据移动终端测量接收到的信号强度和已知的无线信号衰落模型,可以估算出收发方之间的距离,根据多个估算的距离值,可以计算出移动终端的位置.在室内环境下,AP 的信号覆盖范围一般在100米的范围以内,无线信号在传输过程中,接收信号的功率强度与传输距离存在着某种变化关 系,找出特定环境中的变化关系,就可以应用于

【BOI2007】摩基亚Mokia

P1948 - [BOI2007]摩基亚Mokia Description 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户C的位置在哪?"的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如"给定区域内有多少名用户?"的问题. 在定位系统中,世界被认为是一个W * W的正方形区域,由1 * 1的方格组成.每个方格都有一个坐标(x,y),1<=x,y<=W.坐标的编号从1开始

云服务器 ECS Linux 系统 CPU 占用率较高问题排查思路

https://help.aliyun.com/knowledge_detail/41225.html?spm=5176.7841174.2.2.ifP9Sc 注意:本文相关配置及说明已在 CentOS 6.5 64 位操作系统中进行过测试.其它类型及版本操作系统配置可能有所差异,具体情况请参阅相应操作系统官方文档. 如果云服务器 ECS Linux 系统的 CPU 持续跑高,则会对系统稳定性和业务运行造成影响.本文对 CPU 占用率较高问题的排查分析做简要说明. CPU 负载查看方法 使用 v