btrace使用
btrace使用
目录btracee是btrace的解压目录
btrace/btrace是btrace的项目工程
root@ubuntu:/usr/local/bogon/btrace# tree btrace
btrace
├── bin
├── btrace-agent.jar
├── btrace-boot.jar
├── btrace-client.jar
└── src
├── btrace
├── HelloWorld.class
├── HelloWorld.java
└── TraceHelloWorld.java
3 directories, 6 files
root@ubuntu:/usr/local/bogon/btrace# cd -
/usr/local/bogon
root@ubuntu:/usr/local/bogon# tree btrace
btrace
├── bin
│ ├── btrace
│ ├── btrace.bat
│ ├── btracec
│ ├── btracec.bat
│ ├── btracer
│ └── btracer.bat
├── btrace
│ ├── bin
│ ├── btrace-agent.jar
│ ├── btrace-boot.jar
│ ├── btrace-client.jar
│ └── src
│ ├── btrace
│ ├── HelloWorld.class
│ ├── HelloWorld.java
│ └── TraceHelloWorld.java
├── btrace-bin.tar.gz
├── btrace.zip
├── build
│ ├── btrace-agent.jar
│ ├── btrace-boot.jar
│ └── btrace-client.jar
├── COPYRIGHT
├── docs
在src目录直接执行btrace pid TraceHelloWorld.java
# ../../bin/btrace 9221 TraceHelloWorld.java
the class name=>HelloWorld
the class method=>execute
the class method params=>1498
the class method execute time=>1499
-------------------------------------------
the class name=>HelloWorld
the class method=>execute
the class method params=>1903
the class method execute time=>1903
-------------------------------------------
如:TraceHelloWorld
# cat TraceHelloWorld.java
import static com.sun.btrace.BTraceUtils.println;
import static com.sun.btrace.BTraceUtils.str;
import static com.sun.btrace.BTraceUtils.strcat;
import static com.sun.btrace.BTraceUtils.timeMillis;
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.ProbeClassName;
import com.sun.btrace.annotations.ProbeMethodName;
import com.sun.btrace.annotations.TLS;
@BTrace
public class TraceHelloWorld {
@TLS
private static long startTime = 0;
@OnMethod(clazz = "HelloWorld", method = "execute")
public static void startMethod(){
startTime = timeMillis();
}
@OnMethod(clazz = "HelloWorld", method = "execute", location = @Location(Kind.RETURN))
public static void endMethod(){
println(strcat("the class method execute time=>", str(timeMillis()-startTime)));
println("-------------------------------------------");
}
@OnMethod(clazz = "HelloWorld", method = "execute", location = @Location(Kind.RETURN))
public static void traceExecute(@ProbeClassName String name,@ProbeMethodName String method,int sleepTime){
println(strcat("the class name=>", name));
println(strcat("the class method=>", method));
println(strcat("the class method params=>", str(sleepTime)));
}
}
比如我这里跟踪Jedis的连接ConnectionTrace
import static com.sun.btrace.BTraceUtils.println;
import static com.sun.btrace.BTraceUtils.timeMillis;
import com.sun.btrace.BTraceUtils.Threads;
import com.sun.btrace.annotations.Export;
import com.sun.btrace.annotations.OnExit;
import com.sun.btrace.annotations.OnMethod;
import com.sun.btrace.annotations.Return;
import com.sun.btrace.annotations.Self;
import com.sun.btrace.annotations.TLS;
public class ConnectionTrace {
@TLS
private static long startTime = 0;
@Export private static long openedCount;
@Export private static long penedCount;
@Export private static long closedCount;
@OnMethod(clazz = "/*.jedis.Connection/", method = "makeObject")
public static void startMethod(@Return Object obj){
startTime = timeMillis();
penedCount++;
println("One connection is opened!");
println(obj);
Threads.jstack();
}
@OnMethod(clazz = "/*.jedis.Connection/", method = "destroyObject")
public static void endMethod(@Self Object obj){
closedCount++;
println("One connection is closed!");
println(obj);
Threads.jstack();
}
@OnExit
public static void f(){
println("Total opened connection:");
println(openedCount);
println("Total closed connection:");
println(closedCount);
}
}
btrace使用的更多相关文章
- java性能调优及问题追踪--Btrace的使用
在生产环境中经常遇到格式各样的问题,如OOM或者莫名其妙的进程死掉.一般情况下是通过修改程序,添加打印日志:然后重新发布程序来完成.然而,这不仅麻烦,而且带来很多不可控的因素.有没有一种方式,在不修改 ...
- 使用jvisualvm.exe 的Btrace插件介绍/使用教程
一.背景 在生产环境中可能经常遇到各种问题,定位问题需要获取程序运行时的数据信息,如方法参数.返回值.全局变量.堆栈信息等.为了获取这些数据信息,我们可以 通过改写代码,增加日志信息的打 ...
- BTrace入门教程
bin版:https://kenai.com/projects/btrace/downloads/directory/releases 源码:https://github.com/btraceio/b ...
- 让VisualVM+BTrace进入unsafe mode
让VisualVM+BTrace进入unsafe mode http://kenai.com/projects/btrace/pages/UserGuide BTrace很强大,但有很多安全限制,比如 ...
- 使用jvisualvm.exe 的Btrace插件监控应用程序
之前提到使用命令行的方式执行btrace监控,其实jdk提供更好的方式监控应用程序. 我们可以使用jvisualvm.exe加插件的方式监控,这样更加方便. 1.在jvisualvm.exe安装btr ...
- 使用BTRACE定位系统中慢的问题
在访问页面请求的时候,如果系统执行效率低,我们怎样才能定位到这些页面请求呢? java 有一个十分有效的动态跟踪工具-btrace 网址:https://kenai.com/projects/bt ...
- Java BTrace实战(1)--BTrace的入门和使用
前言: 对线上的java服务, 往往采用日志进行问题处理和分析. 倘若日志缺乏相关的信息时, 那又该如何处理? 远程调试会影响服务的正常工作, 修改代码重新部署的方案其实时性和灵活性难以保证(线上服务 ...
- Btrace入门到熟练小工完全指南
BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的. BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息.而不需要不断地修改代码, ...
- btrace 实践笔记
btrace简介: btrace 是一个使用在JAVA平台上面的,安全的,动态跟踪工具.它一般用于动态跟踪正在运行的jAVA程序. 使用说明在这里.下载地址在这里. 下载的时候 ...
随机推荐
- highlight高亮风格
highlight代码高亮的style有很多个,今天闲着没事,突然想看看各个style的效果.列在这里,以后想用的时候看看. ------------------------------------- ...
- 让ecshop模板支持php运算
让ecshop模板支持php运算在 cls_template.php 底部加入函数: /** * 处理if标签 * * @access public * @param string $tag_args ...
- linux 下安装mongodb
1.初始化docker: -v 设置docker和host共享目录,格式hostPath:dockerContainerPath -p 端口映射 --name,容器名称 cen ...
- 高程(3):操作符、for、for...in循环、break/continue/return语句、函数等
1.关系操作符 注意点:1)比较操作数是两个字符串,是比较字符串的字符编码值. 如:"a" > "b" 返回 false:"a" & ...
- JS学习-创建对象
1.标准创建对象模式 var person = new Object(); person.name = "Nicholas"; person.age = 29; person.jo ...
- ssh配置git clone简易流程
1. 生成密钥 ssh-keygen -t rsa -C "jaynaruto@qq.com" //如果只有一对密钥,建议不要修改默认的密钥名称,即一直按回车即可 此命令会在你当前 ...
- ORA-00257:archiver error解决办法
出现ORA-00257错误(空间不足错误),通过查找资料,绝大部分说这是由于归档日志太多,占用了全部的硬盘剩余空间导致的,通过简单删除日志或加大存储空间就能够解决. (一).oralce 11g更改归 ...
- springMVC接受JSON异常
在springMVC 使用@RequestBody接受Json总是报如下错误: HTTP Status 500 - Handler processing failed; nested exceptio ...
- windows 安装 mongodb
windows 安装 mongodb 下载 首先到官网下载合适的安装包,下载地址为 https://www.mongodb.com/download-center MongoDB for Window ...
- myabatis oracle 调用存储过程返回list结果集
Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...