记录一次 Arthas 使用
【Arthas 官方社區(qū)正在舉行征文活動,參加即有獎品拿~點擊投稿】
前言
疫情期間,在家辦公,每天都是 007,感覺自己已經(jīng)升級為熊貓?zhí)毓ち?#xff0c;心累,身體疲憊!!!
今天終于有時間休息一下,然后記錄一下在家辦公期間 Arthas 的簡單使用。
下載安裝
- 方式一:推薦使用 IDEA 插件下載 Cloud Toolkit 來使用 Arthas
Cloud Toolkit 是阿里云發(fā)布的免費本地 IDE 插件,幫助開發(fā)者更高效地開發(fā)、測試、診斷并部署應(yīng)用。通過插件,可以將本地應(yīng)用一鍵部署到任意服務(wù)器,甚至云端(ECS、EDAS、ACK、ACR 和 小程序云等);并且還內(nèi)置了 Arthas 診斷、Dubbo工具、Terminal 終端、文件上傳、函數(shù)計算 和 MySQL 執(zhí)行器等工具。不僅僅有 IntelliJ IDEA 主流版本,還有 Eclipse、Pycharm、Maven 等其他版本。
- 方式二:直接下載
啟動:java -jar arthas-boot.jar
這里需要重點說明一下:必須使用和目標(biāo)進程相同的用戶,否則啟動不成功。
問題背景
本人前天剛上線一個任務(wù)。由于某產(chǎn)品手誤,誤操作了線上數(shù)據(jù),要求幫忙把數(shù)據(jù)刪除了。
這尼瑪?shù)恼婵影?#xff0c;明顯是坑老子。
還好有先見之明,沒次做任務(wù)的時候多多少少都會寫幾個后門工具(不是為了刪庫跑路,而是這些后門在特定情況下真能應(yīng)急使用,求人不如求己)。但是這次后門工具還有改造一下才行,大半夜的又找不到人來幫你上線,自己又沒有權(quán)限。這時候想起了 Arthas 這個工具可以熱加載。
重點來了
- jad 反編譯代碼
這里有保密協(xié)議限制,包路徑已經(jīng)打碼,小伙伴們直接看過程就可以了。
- vim 修改反編譯出來的代碼
- 將這個類重新編譯成 class 文件
這里就不過說明了,簡單的程序直接javac x x x x.java就可以了,但是我這個類里面還依賴了其他的類型,所以我是用maven直接編譯的整個Java項目,然后但是把這個新的class文件copy出來然后上傳到服務(wù)器的。
正常來說是應(yīng)該使用Arthas的mc命令來重新編譯這個修改后文件。但是我在服務(wù)器上始終沒有編譯成功,錯誤原因以后在研究。
- sc 查找加載 **AggregateNoRoomService **的 ClassLoader
sc -d * AggregateNoRoomService | grep classLoaderHash
返回結(jié)果:classLoaderHash 1b36fa2
- redefine 熱更新代碼
redefine -c 1b36fa2 /tmp/AggregateNoRoomService.class
返回結(jié)果:redefine success, size :1
這是時候可以在使用 jad 命令,在反編譯一下這個類,看看是不是真正更新成功了。
執(zhí)行后門工具
見證奇跡的時候到了,數(shù)據(jù)被清理掉了,沒有求 ops 給你開權(quán)限重新部署程序,沒有給你的 tl 打電話說要臨時審批一個腳本,太爽了。
但是我在這里還是強調(diào)一下,最好還是慎用,畢竟走正規(guī)流程還不不用背鍋的。(這么做很容背鍋,而且產(chǎn)品小哥或者產(chǎn)品小姐姐下次會直接找你幫我修復(fù)點數(shù)據(jù)唄,直接繞過了你領(lǐng)導(dǎo)或上級。說明我這里真的沒有黑產(chǎn)品, 來吧互相傷害吧)
總結(jié)
Arthas 其實還是很強大的,可以幫我們排查線上問題,環(huán)境允許的情況建議可以使用,會帶來很多便利,這里就過多說明了。
Arthas 征文活動火熱進行中
Arthas 官方正在舉行征文活動,如果你有:
- 使用 Arthas 排查過的問題
- 對 Arthas 進行源碼解讀
- 對 Arthas 提出建議
- 不限,其它與 Arthas 有關(guān)的內(nèi)容
歡迎參加征文活動,還有獎品拿哦~點擊投稿
“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)者的公眾號。”
總結(jié)
以上是生活随笔為你收集整理的记录一次 Arthas 使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进击的 Kubernetes 调度系统(
- 下一篇: Google 宣布将 Istio 商标转