返回顶部
首页 > 资讯 > 精选 >线上排查问题的利器Btrace怎么用
  • 127
分享到

线上排查问题的利器Btrace怎么用

2023-06-17 13:06:16 127人浏览 八月长安
摘要

这篇文章主要介绍了线上排查问题的利器Btrace怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Btrace 是一个安全,可以动态跟踪 java 程序的一种工具。他的操作

这篇文章主要介绍了线上排查问题的利器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 的注释,以表示是 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

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

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

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

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

感谢你能够认真阅读完这篇文章,希望小编分享的“线上排查问题的利器Btrace怎么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: 线上排查问题的利器Btrace怎么用

本文链接: https://lsjlt.com/news/289431.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 线上排查问题的利器Btrace怎么用
    这篇文章主要介绍了线上排查问题的利器Btrace怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Btrace 是一个安全,可以动态跟踪 java 程序的一种工具。他的操作...
    99+
    2023-06-17
  • java线上问题怎么排查
    要排查Java线上问题,可以采取以下步骤: 收集问题信息:收集问题的现象、出现的频率、受影响的用户、相关日志信息等。 查看日...
    99+
    2023-10-27
    java
  • 怎么排查与解决python编程项目中线上问题
    这篇文章主要讲解了“怎么排查与解决python编程项目中线上问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么排查与解决python编程项目中线上问题”吧!问题描述最近因为公司业务需要,...
    99+
    2023-06-25
  • 如何解决j2Cache线上异常排查问题
    这篇文章主要为大家展示了“如何解决j2Cache线上异常排查问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决j2Cache线上异常排查问题”这篇文章吧。问题背景开发反馈,线上有个服务在...
    99+
    2023-06-29
  • java线上内存溢出问题如何排查
    Java线上内存溢出问题的排查步骤如下:1. 查看错误日志:首先检查应用程序的错误日志,查找与内存溢出相关的异常信息。常见的内存溢出...
    99+
    2023-10-11
    java
  • 解析Arthas协助排查线上skywalking不可用问题
    目录前言使用到的工具arthas先定位问题一问题一:问题解决:功能说明参数说明定位问题二问题二:问题解决:结语前言 首先描述下问题的背景,博主有个习惯,每天上下班的时候看下skywa...
    99+
    2024-04-02
  • Java线上问题排查神器Arthas实战原理解析
    概述 背景 是不是在实际开发工作当中经常碰到自己写的代码在开发、测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼...
    99+
    2024-04-02
  • 一次线上mongo慢查询问题排查处理记录
    目录一、简单介绍二、事件脉络1、起因2、排查处理3、问题分析4、回顾三、总结一、简单介绍 mongo语句查询条件中出现null或空串,可能会导致索引失效,查询优化器无法选择正确的查询...
    99+
    2024-04-02
  • 线上问题排查之golang使用json进行对象copy
    前言: 记一次golang使用json进行对象copy的内存溢出问题排查 问题现象:新增的功能,灰度部署在k8s集群的服务,发现机器老是被打崩,因为是灰度,且控制了qps在100多,...
    99+
    2024-04-02
  • j2Cache线上异常排查问题解决记录分析
    目录问题背景问题分析假设问题小心求证问题重现问题解决问题后记-下面才是真正的原因重新假设最终解决问题背景 开发反馈,线上有个服务在运行一段时间后,就会抛异常导致redis缓存不可用。...
    99+
    2024-04-02
  • python编程项目中线上问题排查与解决
    目录问题描述问题分析问题解决总结文 | 極光 来源:Python 技术「ID: pythonall」 最近开发中遇到个小问题,因为业务上的设计存在问题,导致数据库表总是被锁...
    99+
    2024-04-02
  • Java线上问题排查工具Arthas 原理以及用法是什么
    这篇文章将为大家详细讲解有关Java线上问题排查工具Arthas 原理以及用法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言当你兴冲冲地开始运行自己的 Java 项目时,你是否遇到...
    99+
    2023-06-04
  • 一次线上websocket返回400问题排查的实战记录
    目录现象抓包排查问题定位解决方案1解决方案2原因探讨总结现象 生产环境websocket无法正常连接,服务端返回400 bad request,开发及测试环境均正常。 抓包排查 s...
    99+
    2024-04-02
  • Java线上服务CPU、内存飙升问题排查步骤!
    01 引言 作为一名从事Java开发快一年的程序员,在线上经常碰到某个模块的Pod发出CPU与内存告警的问题,而这些问题会导致系统响应缓慢甚至是服务不可用。一般情况下可以通过重启或者调高Pod的资源量或者增加Pod数量暂时解决问题,但这是治...
    99+
    2023-09-02
    java jvm 开发语言 程序人生 自动化测试
  • Node.js 子线程Crash 问题的排查方法
    前言:昨天碰到了一个 worker_threads crash 的问题,最终经过阅读源码和调试找到了具体原因。不得不说,阅读源码是解决问题的非常有效的方法。 代码例子如下。 inde...
    99+
    2024-04-02
  • 怎么排查goroutine泄漏问题
    这篇文章主要介绍“怎么排查goroutine泄漏问题”,在日常操作中,相信很多人在怎么排查goroutine泄漏问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么排查go...
    99+
    2024-04-02
  • 记一次线上SpringCloudFeign请求服务超时异常排查问题
    由于近期线上单量暴涨,第三方反馈部分工单业务存在查询处理失败现象,经排查是当前系统通过FeignClient调用下游系统出现部分超时失败(异常代码贴在下方)。 Caused by: ...
    99+
    2024-04-02
  • web开发怎么排查超时问题
    这篇文章主要讲解了“web开发怎么排查超时问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web开发怎么排查超时问题”吧!一气呵成,bug 侧漏var&n...
    99+
    2024-04-02
  • 怎么快速排查Linux硬件问题
    这篇文章给大家分享的是有关怎么快速排查Linux硬件问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.快速诊断设备、模块和驱动程序故障排查的第一步通常是显示Linux服务器上安装的硬件列表。你可以使用ls命令...
    99+
    2023-06-28
  • java内存逃逸问题怎么排查
    Java内存逃逸问题通常是指在程序中创建的对象在其作用域之外仍然被引用,导致无法被垃圾收集器回收。以下是一些排查Java内存逃逸问题...
    99+
    2023-10-23
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作