自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

線上排查問題的利器——Btrace

開發(fā) 后端
Btrace 是一個安全,可以動態(tài)跟蹤 java 程序的一種工具。他的操作不會對原有 java 進程產(chǎn)生影響,不用關(guān)閉正在運行的 java 進程,也不會修改 java 進程中的邏輯和數(shù)據(jù)。因此,也就成為我們線上跟蹤生產(chǎn)代碼的有力工具!

之前 Btrace 只是聽說過,但還沒有具體的用到。最近在排查線上問題的時候,使用了 Btrace ,發(fā)現(xiàn) Btrace 真是在關(guān)鍵時候的利器。

Btrace 是一個安全,可以動態(tài)跟蹤 java 程序的一種工具。

他的操作不會對原有 java 進程產(chǎn)生影響,不用關(guān)閉正在運行的 java 進程,也不會修改 java 進程中的邏輯和數(shù)據(jù)。

因此,也就成為我們線上跟蹤生產(chǎn)代碼的有力工具!

Btrace 的腳本編寫也非常簡單:和寫 Java 代碼一樣的,因此對于我們,學(xué)習(xí)的曲線幾乎是平坦的。

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

如何使用 Btrace

基本用法: trace

其中, btrace 是在 btrace 下載包中的命令 , pid 是 JVM 的進程 id , btrace-script 是編寫的 btrace 腳本。

Btrace 中的一些概念

Probe Point : 關(guān)注點。就是我們要關(guān)注應(yīng)用程序中要執(zhí)行的“地方”,或者是一些“事件”的發(fā)生。

Trace Action : 就是觸發(fā)了 probe point 的時候,我們所要執(zhí)行的動作。

Action Methods :我們的 trace action 都是寫在某個類的靜態(tài)方法中的,這個靜態(tài)方法,就是 action method 。

Btrace 中的一些限制:

Btrace 的初衷是要“跟蹤代碼”,而不是修改代碼,因此他要保證我們注入的腳本,是安全的,對應(yīng)用程序來說是“只讀”的。也就是說不能修改應(yīng)用程序的代碼或者數(shù)據(jù)。因此 Btrace 中有一些限制,主要有:

不能新建對象

不能拋異常

不能 catch 異常

不能調(diào)用實例方法和靜態(tài)方法。只能調(diào)用 Btrace 提供的 com.sun.btrace.BTraceUtils 中的方法和自己在腳本中定義的方法。

不能有循環(huán)

不能有斷言

……

初看起來,好像限制蠻多的。不過, com.sun.btrace.BTraceUtils 提供的方法很多,足夠我們來“跟蹤”代碼了。而且,這些限制也是必要的,因為我們只是到那個 JVM 去看看,看看而已。

一個簡單的 Btrace 腳本例子,其實就是 Java 代碼

 

 

其中:

其中類名需要加上 @Btrace 的注釋,以表示是 Btrace 腳本

OnMethod 表示一個 probe point ,這個就表示當執(zhí)行到 java.awt.Component 這個類的 方法(這個是 Component 的構(gòu)建方法)時,就觸發(fā) func 方法。

@Self 表示這個被實例化的 Component 的引用

@OnTimer 表示事件(通過時間)觸發(fā)的 probe point ,每隔 2 秒觸發(fā)一次

相信程序不用做過多解釋,大家都知道,終端將會打印出從跟蹤開始, Component 被實例化的個數(shù)。

支持的跟蹤類型

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

跟蹤到某個實例方法的觸發(fā)

跟蹤到某個接口方法的觸發(fā)

跟蹤到觸發(fā)方法的參數(shù),返回值

可以將當前觸發(fā)的線程堆棧打印出來

設(shè)置還可以跟蹤某個方法中的哪一行代碼被執(zhí)行到

Btrace 的 User Guide

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

關(guān)于 Btrace 的原理

詳情可見: http://victorzhzh.javaeye.com/blog/965789

什么時候用 Btrace

雖然 Btrace 在關(guān)鍵時候能起到迅速排查問題的作用,但我個人感覺,這還是不到萬不得已才使用的好。

首先,我們代碼上線前,應(yīng)該充分 review ,充分和相關(guān)方進行溝通,以避免不必要的問題發(fā)生。

其次,我們應(yīng)該養(yǎng)成記 log 的良好習(xí)慣。遇到問題,如果有相關(guān)日志可以排查,是最方便的,同時,也是最安全,成本***的一種排查方法。

***,我們可以結(jié)合 btrace 和 jdk 自帶的 tool 來排查問題,比如 jstack , jstat 等等,快速的定位問題。

以上就是本人剛開始使用 Btrace 的一些成果,希望能對大家排查問題帶來一些作用 。

【編輯推薦】

  1. MyEclipse 8.6 for Spring發(fā)布 新增iPhone工具
  2. MyEclipse 8.6正式版發(fā)布 以Eclipse 3.5.2為核心
  3. MyEclipse 8.6 M1發(fā)布 支持更多服務(wù)器
責任編輯:金賀 來源: JavaEye博客
相關(guān)推薦

2017-10-12 12:24:50

java

2024-08-14 14:20:00

2017-08-18 22:40:33

線上線程備份

2023-03-02 08:53:57

排查問題效率經(jīng)驗

2021-07-14 13:50:51

Linux命令文件

2020-11-12 10:58:22

Logger級別技巧

2024-10-10 15:32:51

2021-12-26 00:10:39

二分法排查版本

2017-06-09 20:10:44

MySQL復(fù)制線程

2017-06-10 20:47:06

MySQL復(fù)制線程

2020-04-28 09:46:34

線上問題排查

2018-08-10 15:00:42

服務(wù)器內(nèi)存排查

2018-12-10 10:30:40

阿里Linux命令

2021-11-23 21:21:07

線上排查服務(wù)

2024-03-18 09:24:00

索引失效SQL

2019-11-12 08:53:00

線上命令日志

2022-11-16 11:55:22

網(wǎng)絡(luò)連接命令

2023-12-05 07:12:39

優(yōu)化排查性能

2010-10-12 10:04:30

無法無線上網(wǎng)

2019-03-29 10:22:08

Linux系統(tǒng)故障技巧
點贊
收藏

51CTO技術(shù)棧公眾號