在線Profiling技術(shù)之Btrace

線上問題偶爾發(fā)生洒放,最讓人苦惱的是,在問題追蹤過程中滨砍,有些關(guān)鍵位置沒有打log往湿,無(wú)法進(jìn)一步確定問題原因。

重新加日志發(fā)布項(xiàng)目惋戏?

當(dāng)然可以领追,但顯然線上運(yùn)行服務(wù),大部分情況下响逢,是不允許這樣做的绒窑。

為了解決這種問題,Btrace 應(yīng)運(yùn)而生舔亭。

查了不少Btrace 資料些膨,本人也親自實(shí)踐了一下蟀俊,總結(jié)出一些遇到的坑和解決方法。


Btrace 使用有兩種方法

1. 工程引入maven 依賴

<dependency>

? ? ? ? ? <groupId>com.sun.tools.btrace</groupId>

??????????<artifactId>btrace-boot</artifactId>

??????????<version>1.3.11.3</version>

</dependency>

<dependency>

???<groupId>com.sun.tools.btrace</groupId>

???<artifactId>btrace-agent</artifactId>

???<version>1.3.11.3</version>

</dependency>

<dependency>

???<groupId>com.sun.tools.btrace</groupId>

???<artifactId>btrace-client</artifactId>

???<version>1.3.11.3</version>

</dependency>


工程里可以寫好 Btrace 調(diào)試腳本订雾,編譯后發(fā)布項(xiàng)目肢预,在服務(wù)器可以直接執(zhí)行腳本,監(jiān)控目標(biāo)方法洼哎。

2. VisualVM 插件

這種方法好處是VisualVM 界面直觀的顯示烫映,可以在VisualVM直接寫腳本,start 啟動(dòng)噩峦,就可以監(jiān)控 目標(biāo)JVM 窑邦。

這里有點(diǎn)小坑,就是VisualVM 自身的Tools -->Plugins --> Availabel Plugins 下壕探,選擇 BTrace Workbench 。大部分情況下安裝不成功的郊丛。

解決方法:直接去Btrace 官網(wǎng)李请,自己下載插件安裝,鏈接:https://visualvm.github.io/uc/release20/updates.html

Btrace插件

下載上圖中3個(gè)插件文件厉熟,然后在VisualVM 中 Downloaded 欄导盅,點(diǎn)擊 Add Pligins , 選擇以上3個(gè)插件, 點(diǎn)擊左下角 install 安裝即可揍瑟。

安裝成功如下圖白翻,Installed 欄里會(huì)有顯示

插件安裝成功后,本地IDEA啟動(dòng)你的項(xiàng)目绢片,VisualVM 就可以看到本地JVM進(jìn)程滤馍。右鍵可以看到 Trace application?

這里可以編輯 Btrace 嵌入代碼,具體怎么寫可以看看資料底循,比較簡(jiǎn)單巢株。

需要注意的就是unsafe模式,如果想用第三方j(luò)ar 包熙涤,比如 JSONObject. 需要設(shè)置 unsafe=true.?

@BTrace(unsafe=true)

點(diǎn)擊 start ,啟動(dòng)寫好的腳本阁苞,成功的話,如下圖:

接下來祠挫,會(huì)觀察到那槽,Output 面板有 Btrace 日志輸出,根據(jù)自己的需要等舔,打印參數(shù)和返回結(jié)果骚灸,監(jiān)控RT可以用@Duration,單位是 納秒软瞎。

注意:

1. 使用VisualVM 插件Btrace 時(shí)逢唤,工程中不需要依賴btrace的jar 包拉讯,否則會(huì)報(bào)錯(cuò),因?yàn)?jar 包版本不同鳖藕,會(huì)有沖突魔慷。

2. VisualVM的Btrace插件只能監(jiān)測(cè) 本地服務(wù),遠(yuǎn)程通過JMX連接后著恩,沒有?Trace application院尔。

這里很坑。喉誊。邀摆。。伍茄。

我用了很多種方式試了栋盹,折騰好久,都沒解決敷矫,開始以為是我哪里配置的不對(duì)例获。

最后查了很多資料,才知道不支持遠(yuǎn)程曹仗。大部分博客這里都輕描淡寫榨汤,沒有提到這一點(diǎn),容易誤導(dǎo)大家以為可以連遠(yuǎn)程使用怎茫。

這里感覺很雞肋收壕,本來用Btrace 就是為了遠(yuǎn)程在線追蹤代碼的,不支持遠(yuǎn)程轨蛤,要你何用蜜宪?本地我可以直接debug 豈不更好?


還有一種選擇是使用 阿里的?Arthas 祥山。Arthas 雖然也是通過命令觀察端壳,不支持界面操作,不過比Btrace簡(jiǎn)單很多枪蘑,做了通用封裝损谦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市岳颇,隨后出現(xiàn)的幾起案子照捡,更是在濱河造成了極大的恐慌,老刑警劉巖话侧,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栗精,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)悲立,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門鹿寨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人薪夕,你說我怎么就攤上這事脚草。” “怎么了原献?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵馏慨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我姑隅,道長(zhǎng)写隶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任讲仰,我火速辦了婚禮慕趴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鄙陡。我一直安慰自己秩贰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布柔吼。 她就那樣靜靜地躺著,像睡著了一般丙唧。 火紅的嫁衣襯著肌膚如雪愈魏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天想际,我揣著相機(jī)與錄音培漏,去河邊找鬼。 笑死胡本,一個(gè)胖子當(dāng)著我的面吹牛牌柄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侧甫,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼珊佣,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了披粟?” 一聲冷哼從身側(cè)響起咒锻,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎守屉,沒想到半個(gè)月后惑艇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年滨巴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了思灌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恭取,死狀恐怖泰偿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情秽荤,我是刑警寧澤甜奄,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站窃款,受9級(jí)特大地震影響课兄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晨继,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一烟阐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧紊扬,春花似錦蜒茄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至腹缩,卻和暖如春屿聋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藏鹊。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工润讥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盘寡。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓楚殿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親竿痰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脆粥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容