Arthas-java程序運(yùn)行時(shí)debug工具使用
Arthas-java程序運(yùn)行時(shí)debug工具
前段時(shí)間在調(diào)一個(gè)線上缺陷,測(cè)試環(huán)境無(wú)法復(fù)現(xiàn)該問題,只有生產(chǎn)環(huán)境出現(xiàn)這個(gè)問題。
推測(cè)最可能原因
數(shù)據(jù)問題
生產(chǎn)環(huán)境數(shù)據(jù)量比測(cè)試環(huán)境大很多、生產(chǎn)環(huán)境某些數(shù)據(jù)出錯(cuò)。
此問題是導(dǎo)出excel表格的問題。
由于測(cè)試環(huán)境無(wú)法復(fù)現(xiàn),只能在代碼里可能的地方都加上輸出標(biāo)志,看看問題出在哪里。
由于代碼涉及到很多方法,于是乎反反復(fù)復(fù)加了日志信息,然后又打包成jar文件放進(jìn)生產(chǎn)里的classes里面重啟服務(wù),來來回回嘗試了無(wú)數(shù)次終于定位到問題所在點(diǎn)了。
后來,我覺得這個(gè)辦法實(shí)在太過笨拙,本來計(jì)算機(jī)能夠完成能夠檢測(cè)得到的問題,居然用手工來尋找定位問題所在點(diǎn),而這個(gè)過程極其耗時(shí),卻又必不可少,非常關(guān)鍵。
我在想能不能開發(fā)一個(gè)用于檢測(cè)追蹤程序運(yùn)行過程中走過的路徑這樣的工具用于定位問題發(fā)生點(diǎn)呢。一直在想著,這樣的開發(fā)應(yīng)該不會(huì)很難。
不過,今天居然發(fā)現(xiàn)這樣的工具已經(jīng)被別人開發(fā)出來了,這就是------Arthas。
Arthas 是Alibaba開源的Java診斷工具,深受開發(fā)者喜愛。
當(dāng)你遇到以下類似問題而束手無(wú)策時(shí),Arthas可以幫助你解決:
- 1.這個(gè)類從哪個(gè) jar 包加載的?為什么會(huì)報(bào)各種類相關(guān)的 Exception?
- 2.我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit?分支搞錯(cuò)了?
- 3.遇到問題無(wú)法在線上 debug,難道只能通過加日志再重新發(fā)布嗎?
- 4.線上遇到某個(gè)用戶的數(shù)據(jù)處理有問題,但線上同樣無(wú)法 debug,線下無(wú)法重現(xiàn)!
- 5.是否有一個(gè)全局視角來查看系統(tǒng)的運(yùn)行狀況?
- 6.有什么辦法可以監(jiān)控到JVM的實(shí)時(shí)運(yùn)行狀態(tài)?
Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同時(shí)提供豐富的 Tab 自動(dòng)補(bǔ)全功能,進(jìn)一步方便進(jìn)行問題的定位和診斷。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)哈希表的分離鏈接法
今天給大家?guī)淼氖顷P(guān)于Java數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí),文章圍繞著Java哈希表的分離鏈接法展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06JVM---jstack分析Java線程CPU占用,線程死鎖的解決
這篇文章主要介紹了JVM---jstack分析Java線程CPU占用,線程死鎖的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09Spring @Valid和@Validated區(qū)別和用法實(shí)例
這篇文章主要介紹了Spring @Valid和@Validated區(qū)別和用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Ribbon負(fù)載均衡服務(wù)調(diào)用的示例詳解
Rbbo其實(shí)就是一個(gè)軟負(fù)載均衡的客戶端組件,他可以和其他所需請(qǐng)求的客戶端結(jié)合使用,這篇文章主要介紹了Ribbon負(fù)載均衡服務(wù)調(diào)用案例代碼,需要的朋友可以參考下2023-01-01Java經(jīng)典設(shè)計(jì)模式之適配器模式原理與用法詳解
這篇文章主要介紹了Java經(jīng)典設(shè)計(jì)模式之適配器模式,簡(jiǎn)單說明了適配器模式的概念、原理,并結(jié)合實(shí)例形式分析了java適配器模式的用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-08-08