线上排查问题的利器——Btrace
创始人
2024-07-24 08:21:02
0

之前 Btrace 只是听说过,但还没有具体的用到。最近在排查线上问题的时候,使用了 Btrace ,发现 Btrace 真是在关键时候的利器。

Btrace 是一个安全,可以动态跟踪 java 程序的一种工具。

他的操作不会对原有 java 进程产生影响,不用关闭正在运行的 java 进程,也不会修改 java 进程中的逻辑和数据。

因此,也就成为我们线上跟踪生产代码的有力工具!

Btrace 的脚本编写也非常简单:和写 Java 代码一样的,因此对于我们,学习的曲线几乎是平坦的。

下面就分享一下 Btrace 的一些用法:

如何使用 Btrace

基本用法: trace

其中, btrace 是在 btrace 下载包中的命令 , pid 是 JVM 的进程 id , btrace-script 是编写的 btrace 脚本。

Btrace 中的一些概念

Probe Point : 关注点。就是我们要关注应用程序中要执行的“地方”,或者是一些“事件”的发生。

Trace Action : 就是触发了 probe point 的时候,我们所要执行的动作。

Action Methods :我们的 trace action 都是写在某个类的静态方法中的,这个静态方法,就是 action method 。

Btrace 中的一些限制:

Btrace 的初衷是要“跟踪代码”,而不是修改代码,因此他要保证我们注入的脚本,是安全的,对应用程序来说是“只读”的。也就是说不能修改应用程序的代码或者数据。因此 Btrace 中有一些限制,主要有:

不能新建对象

不能抛异常

不能 catch 异常

不能调用实例方法和静态方法。只能调用 Btrace 提供的 com.sun.btrace.BTraceUtils 中的方法和自己在脚本中定义的方法。

不能有循环

不能有断言

……

初看起来,好像限制蛮多的。不过, com.sun.btrace.BTraceUtils 提供的方法很多,足够我们来“跟踪”代码了。而且,这些限制也是必要的,因为我们只是到那个 JVM 去看看,看看而已。

一个简单的 Btrace 脚本例子,其实就是 Java 代码

 

 

其中:

其中类名需要加上 @Btrace 的注释,以表示是 Btrace 脚本

OnMethod 表示一个 probe point ,这个就表示当执行到 java.awt.Component 这个类的 方法(这个是 Component 的构建方法)时,就触发 func 方法。

@Self 表示这个被实例化的 Component 的引用

@OnTimer 表示事件(通过时间)触发的 probe point ,每隔 2 秒触发一次

相信程序不用做过多解释,大家都知道,终端将会打印出从跟踪开始, Component 被实例化的个数。

支持的跟踪类型

Btrace 支持的跟踪类型有很多了,包括可以跟踪:

跟踪到某个实例方法的触发

跟踪到某个接口方法的触发

跟踪到触发方法的参数,返回值

可以将当前触发的线程堆栈打印出来

设置还可以跟踪某个方法中的哪一行代码被执行到

Btrace 的 User Guide

http://kenai.com/projects/btrace/pages/UserGuide

关于 Btrace 的原理

详情可见: http://victorzhzh.javaeye.com/blog/965789

什么时候用 Btrace

虽然 Btrace 在关键时候能起到迅速排查问题的作用,但我个人感觉,这还是不到万不得已才使用的好。

首先,我们代码上线前,应该充分 review ,充分和相关方进行沟通,以避免不必要的问题发生。

其次,我们应该养成记 log 的良好习惯。遇到问题,如果有相关日志可以排查,是最方便的,同时,也是最安全,成本***的一种排查方法。

***,我们可以结合 btrace 和 jdk 自带的 tool 来排查问题,比如 jstack , jstat 等等,快速的定位问题。

以上就是本人刚开始使用 Btrace 的一些成果,希望能对大家排查问题带来一些作用 。

【编辑推荐】

  1. MyEclipse 8.6 for Spring发布 新增iPhone工具
  2. MyEclipse 8.6正式版发布 以Eclipse 3.5.2为核心
  3. MyEclipse 8.6 M1发布 支持更多服务器

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...