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