線上排查問題的利器Btrace怎么用

這篇文章主要介紹了線上排查問題的利器Btrace怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

目前創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管運營、企業(yè)網(wǎng)站設(shè)計、龍泉驛網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

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 的注釋,以表示是 Btrace 腳本

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

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

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

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

支持的跟蹤類型

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

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

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

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

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

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

Btrace 的 User Guide

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

什么時候用 Btrace

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

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

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

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

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“線上排查問題的利器Btrace怎么用”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

當(dāng)前標(biāo)題:線上排查問題的利器Btrace怎么用
當(dāng)前地址:http://bm7419.com/article10/iihhdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、ChatGPT網(wǎng)站排名、建站公司網(wǎng)站改版、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)