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