- 浏览: 378619 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
真的全站唯一:
描述的能不能准确一点,我也以为bigDecimal性能比dou ...
【性能】Java BigDecimal和double性能比较 -
zhanggang807:
学习到了。。以后会考虑往这方面设计
【java规范】Java spi机制浅谈 -
Xiong506:
xiyuan1025 写道你这是在linux下吗,我在linu ...
[监控]Btrace监控简单笔记 -
Xiong506:
xiyuan1025 写道你这是在linux下吗,我在linu ...
[监控]Btrace监控简单笔记 -
Bll:
找不到实现类
【java规范】Java spi机制浅谈
前阵子看了公司网站的一个cache 命中率统计的btrace监控脚本,感觉这个玩意功能挺强大,对应用监控有很大实践意义。也顺便把btrace简单学习了一下,未涉及原理方面的内容,只是使用层面的东西,简单笔记总结一下。
安装
Linux下:
在http://kenai.com/projects/btrace下载btrace-bin.tar.gz,并解压,设置环境变量:
export BTRACE_HOME=/home/yblin/workspace/btrace/btrace-bin export PATH=$BTRACE_HOME/bin:$PATH
敲入btrace命令看到提示,说明安装正常。
简介
是一个安全动态的监控工具。通过动态的修改运行时的java字节码,可以在运行时代码中插入监控行为。
几个概念
探测点
(probe point):用于表示需要被探测监控的位置或者事件。
探测行为
(action):探测点触发时进行的探测行为。如计时等等。
探测方法
(method):当探测点触发的时候,需要触发的探测行为所定义在的那个方法。
代码结构和例子
Btrace代码结构(1.2之后static可以去掉
)
//annotation defined here public static void trace(){ //actions defined here }
注:以上是一个探测方法,方法的注解annotation用来指示探测点,即要探测的位置;方法体的内容,是探测点触发之后的探测行为。
以下是一个例子:
待测试代码:
package btrace.test; public class MyBtraceTest { public void execute() { int i = (int) (Math.random() * 1000); System.out.println(i); try { Thread.sleep(Math.abs(i)); } catch (InterruptedException e) { e.printStackTrace(); } } public void loopExcute() { while (true) { execute(); } } public static void main(String[] args) { MyBtraceTest m = new MyBtraceTest(); m.loopExcute(); } }
要测试待测代码里excute方法的执行时间,并每次打出方法栈,监控代码如下:
package btrace.test; import static com.sun.btrace.BTraceUtils.jstack; 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.TLS; @BTrace public class TraceMethodTime { @TLS static long beginTime; @OnMethod(clazz = "btrace.test.MyBtraceTest", method = "execute") public static void traceExecuteBegin() {// 在方法btrace.test.MyBtraceTest.execute()执行之前进行监控。 println("method start!"); beginTime = timeMillis(); // 监控行为是记录一个开始时间。 } // OnMethod代表运行一个方法的时候进行监控,location @Location(Kind.RETURN)代表在方法返回的时候触发监控行为。 @OnMethod(clazz = "btrace.test.MyBtraceTest", method = "execute", location = @Location(Kind.RETURN)) public static void traceExcute() { // 监控行为是根据开始时间计算出方法运行时间。 println(strcat(strcat("btrace.test.MyBtraceTest.execute time is:", str(timeMillis() - beginTime)), "ms")); println("method end!"); jstack();//打印方法栈 } }
先运行 MyBtraceTest,通过jps拿到进程id,再通过
btrace 11059 btrace/test/TraceMethodTime.java
命令进行监控。可以得到结果:
参考
Btrace的注解方式有很多,意义各不同,同时也有很多现成例子,能帮助实现各种监控场景。
参考官网:http://kenai.com/projects/btrace/pages/UserGuide
评论
5 楼
Xiong506
2017-07-18
xiyuan1025 写道
你这是在linux下吗,我在linux下使用btrace,总是提示
Invalid path 9215 specified: 2/No such file or directory
执行命令为btrace 9215 BTraceConnection.java
Invalid path 9215 specified: 2/No such file or directory
执行命令为btrace 9215 BTraceConnection.java
解决了,原来系统里原来就有btrace命令
用which btrace可以看到其位于/usr/bin/btrace,这个不是我们要用的。
所以用绝对路径运行我们下载的btrace就好,例如:
/usr/local/btrace-1.3.9/bin/btrace 13366 /ftp/btrace/HelloWorldScript.java
4 楼
Xiong506
2017-07-18
xiyuan1025 写道
你这是在linux下吗,我在linux下使用btrace,总是提示
Invalid path 9215 specified: 2/No such file or directory
执行命令为btrace 9215 BTraceConnection.java
Invalid path 9215 specified: 2/No such file or directory
执行命令为btrace 9215 BTraceConnection.java
........这个我也遇到了,大家都解决了吗?
3 楼
renzhengzhi
2016-07-18
xiyuan1025 写道
你这是在linux下吗,我在linux下使用btrace,总是提示
Invalid path 9215 specified: 2/No such file or directory
执行命令为btrace 9215 BTraceConnection.java
Invalid path 9215 specified: 2/No such file or directory
执行命令为btrace 9215 BTraceConnection.java
我也遇到这个问题了,请问解决了嘛?
2 楼
淘宝境界哥
2015-09-29
不错,性能排查利器
1 楼
xiyuan1025
2015-07-17
你这是在linux下吗,我在linux下使用btrace,总是提示
Invalid path 9215 specified: 2/No such file or directory
执行命令为btrace 9215 BTraceConnection.java
Invalid path 9215 specified: 2/No such file or directory
执行命令为btrace 9215 BTraceConnection.java
发表评论
-
Xml ResourceBundle简单实现
2012-04-17 21:45 4468ResourceBundle主要是用于和本地语言环境相关的一些 ... -
【maven】多子模块maven模板工程archetype创建过程
2012-04-02 20:55 17662最近项目里需要创建一 ... -
【java基础】如何设计java应用程序的平滑停止
2012-03-05 23:44 11019java应用程序退出的触发机制有: 1.自动结束:应用没有存 ... -
【java并发】juc Executor框架详解
2012-02-26 13:55 12509Executor 框架是 juc 里提供的线程池的实现。 ... -
【java并发】juc高级锁机制探讨
2012-02-23 00:52 8718最近在看一些j ... -
【java并发】基于JUC CAS原理,自己实现简单独占锁
2012-02-14 13:47 7866synchronized的基本原理回 ... -
[NoSQL]MongoDB初体验
2012-01-05 16:06 3968因为未来业务发展的一 ... -
【JVM】HotSpot JVM内存管理和GC策略总结
2011-12-13 22:05 15969JVM的相关知识是学习java ... -
【性能】JDBC PreparedStatement和连接池PreparedStatement Cache学习记录
2011-12-08 17:20 16882之前看JDBC规范的时候对PreparedStatement只 ... -
32位机器下的一个java.lang.OutOfMemoryError错误分析
2011-10-17 11:19 2598昨天在本人windows机器( ... -
DBCP数据源配置项记录
2011-09-01 20:22 3000网站最近发生了数据库连接爆掉的问题。排查了下各个应用存在 ... -
【性能】Java BigDecimal和double性能比较
2011-08-28 20:06 14257我们知道 java 里面有个 BigDecimal ... -
【Spring】IOC容器并发条件下,可能发生死锁
2011-08-28 17:07 69411.背景 上周在生产环境应用启 ... -
JDK7 AIO 初体验
2011-08-17 19:20 2605JDK7 AIO初体验 JDK7已经releas ... -
如果要用java实现算法,一定慎用递归
2011-04-06 20:41 12962现象 : 递归是我们很经典的一种算法实现,可以很好的 ... -
java日志,需要知道的几件事(commons-logging,log4j,slf4j,logback)
2011-02-28 17:12 46410java日志,需要知道的几件事 如果对于comm ... -
JVM问题诊断常用命令:jinfo,jmap,jstack
2010-08-17 17:55 125011.jinfo 描述:输出给定 java ... -
java 浮点数为什么精度会丢失
2010-07-15 22:30 4924由于对float或double 的使用不当,可能会出现精度 ... -
一个枚举类的方法设计
2010-06-21 15:28 1691public enum ActionType { A ... -
java内部字符编码浅析
2010-06-07 21:43 6860java内部字符编码浅析 本周遇到一个 ...
相关推荐
3. 用户友好:操作简单,报警机制明确,用户可以根据自身需求调整警报敏感度。 4. 数据安全:除了防盗,还关注数据安全,提供自动备份和远程锁定功能,减少数据损失。 综上所述,“大学生宿舍笔记本防盗监控 v1.0...
标题“笔记本风扇监控I8kfanGUI(中文版)”指的是一个专为笔记本电脑设计的软件工具,名为I8kfanGUI,它提供了中文界面,用于监测和控制笔记本电脑的风扇转速,以帮助用户有效地管理设备的散热情况。 【描述分析】 ...
Linux 运维笔记:企业级 Zabbix 监控实战 本文档主要介绍了企业级 Zabbix 监控实战的相关知识点,涵盖监控的定义、监控目标、监控方法、监控工具等方面的内容。 1. 监控定义 监控是整个运维乃至整个产品生命周期...
在IT领域,对硬件性能的监控是至关重要的,特别是对于笔记本电脑来说,因为它们的散热系统通常比台式机更为紧凑。"笔记本电脑CPU温度监控工具"是一个专门用于监测计算机中央处理器(CPU)温度的应用程序,它可以帮助...
在现代科技日新月异的时代,利用笔记本进行监控已经成为一种常见的需求,无论是为了保障家庭安全、监测商业环境还是远程管理服务器。"利用笔记本监控"这一主题涵盖了多个IT领域的知识点,让我们一起深入探讨。 首先...
因此,“笔记本温度监控软件”应运而生,成为保障我们设备健康的重要工具。 笔记本电脑的温度监控软件是一种专业软件,旨在实时监测笔记本内部主要硬件组件,如CPU、GPU和硬盘等的温度。这类软件能帮助用户确保设备...
在本文中,我们将深入探讨如何使用C#编程语言来实现一个简易的监控软件,该软件具备实时监控、实时拍照和实时录像的功能。首先,我们需要理解C#中的摄像头访问API,以及如何将这些功能整合到一个应用程序中。 1. **...
通常,此类软件安装简单,界面直观,用户无需专业知识也能轻松操作。 7. **额外功能**:除了基本的温度监控和风扇控制,一些软件还可能包含其他实用功能,如系统清理工具(清除垃圾文件、注册表清理等)、电源管理...
双击即可运行,功能为在电脑锁屏后,自动打开摄像头开始监控,电脑解锁后结束监控并将视频保存在D:/Monitor文件夹。为节省空间,拍摄画质较低,1小时视频约80M。
DELL专用温度监控程序正是针对这一需求而设计的软件工具,它的出现不仅填补了硬件温度管理的空白,还提供了一系列功能以确保笔记本的健康和性能。 这款监控程序的温度检测功能为用户提供了强大的实时监控能力。它...
标题中的“笔记本内存.CPU温度监控工具”是指一种软件应用,设计用于实时监测笔记本电脑的内存使用状况以及中央处理器(CPU)的温度。这类工具对于确保计算机系统的稳定运行至关重要,因为过高的CPU温度可能导致系统...
BatteryCat(桌面笔记本电池监控),一款小巧,界面简洁,没有任何广告的免费软件,主要用途是监控电池的电量和其他数据等 简述 你可以用它来查看您当前的电池电量和最大的电池电量,或者如果您的充电器连接,并且电池...
【戴尔专用温度监控程序】 戴尔专用温度监控程序是一款专为戴尔计算机设计的系统工具,用于实时监测和管理电脑内部硬件的温度状态。它能够帮助用户了解计算机的运行状况,确保硬件在安全范围内工作,防止过热导致的...
监控笔记本安全防护方法 在我们离开笔记本的时候,大家通常习惯是将屏幕进行锁定,以防别人碰自己的笔记本,从而保护自己的隐私。不过即便这样,也还是有人"不老实",总想去"研究一下"别人的电脑。因此,需要引入...
Zabbix 自带键值选项自定义监控服务器端口生产配置详细笔记文档 Zabbix 是一个开源的监控软件,提供了强大的监控功能和灵活的配置能力。在生产环境中,配置正确的监控项是非常重要的,本文将详细介绍如何使用 ...
### Ganglia监控软件知识点 #### 一、Ganglia简介 Ganglia是一款开源的分布式监控系统,主要用于高性能计算(HPC)环境中的资源监控。它能够高效地收集和传播集群内部各节点的状态信息,包括但不限于CPU利用率、...
在IT领域,笔记本电池电力恢复监控软件是一种至关重要的工具,它专为管理和优化笔记本电脑的电池性能而设计。本文将详细解析此类软件的功能、工作原理以及如何通过它们来提升笔记本电池的使用寿命。 电池是笔记本...
### 应用笔记LAT1256+使用STM32的DWT单元监控内存 #### 一、前言 在嵌入式系统开发过程中,针对微控制器中的内存访问行为进行实时监控是一项重要的调试技巧。本篇文章将围绕Data Watchpoint and Trace Unit (DWT)...
笔记本内存.CPU温度监控工具 运行环境WINXP.WIN2000.WIN98 显示笔记本CPU温度工具, 有温度过高报警功能!定时关机功能!可以查看内存使用情况.CPU即时主频情况! BOCC-2009.rar 打开程序直接小化到托盘,不显示主界面!...
BatteryCare是一款专为笔记本用户设计的电池管理软件,旨在提供实时的电池状态监控以及优化电池性能的功能。通过深入了解和分析电池的充放电过程,它能够帮助用户更好地理解和维护自己的笔记本电池,从而延长电池的...