日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

實戰(zhàn)!使用阿里 Arthas 工具分析 CPU 飆高

來源: 責(zé)編: 時間:2023-10-26 17:11:30 314觀看
導(dǎo)讀Arthas是阿里開源的 Java 診斷工具,相比 JDK 內(nèi)置的診斷工具,要更人性化,并且功能強大,可以實現(xiàn)許多問題的一鍵定位,而且可以一鍵反編譯類查看源碼,甚至是直接進(jìn)行生產(chǎn)代碼熱修復(fù),實現(xiàn)在一個工具內(nèi)快速定位和修復(fù)問題的一站

Arthas是阿里開源的 Java 診斷工具,相比 JDK 內(nèi)置的診斷工具,要更人性化,并且功能強大,可以實現(xiàn)許多問題的一鍵定位,而且可以一鍵反編譯類查看源碼,甚至是直接進(jìn)行生產(chǎn)代碼熱修復(fù),實現(xiàn)在一個工具內(nèi)快速定位和修復(fù)問題的一站式服務(wù)。dNH28資訊網(wǎng)——每日最新資訊28at.com

今天,我就帶你使用 Arthas 定位一個 CPU 使用高的問題,系統(tǒng)學(xué)習(xí)下這個工具的使用。dNH28資訊網(wǎng)——每日最新資訊28at.com

首先,下載并啟動 Arthas:dNH28資訊網(wǎng)——每日最新資訊28at.com

curl -O https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arthas-boot.jar

啟動后,直接找到我們要排查的 JVM 進(jìn)程,然后可以看到 Arthas 附加進(jìn)程成功:dNH28資訊網(wǎng)——每日最新資訊28at.com

[INFO] arthas-boot version: 3.1.7[INFO] Found existing java process, please choose one and hit RETURN.* [1]: 12707  [2]: 30724 org.jetbrains.jps.cmdline.Launcher  [3]: 30725 org.geekbang.time.commonmistakes.troubleshootingtools.highcpu.HighCPUApplication  [4]: 24312 sun.tools.jconsole.JConsole  [5]: 26328 org.jetbrains.jps.cmdline.Launcher  [6]: 24106 orgbeans.lib.profiler.server.ProfilerServer3[INFO] arthas home: /Users/zhuye/.arthas/lib/3.1.7/arthas[INFO] Try to attach process 30725[INFO] Attach process 30725 success.[INFO] arthas-client connect 127.0.0.1 3658  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---. /  O  / |  .--. ''--.  .--'|  '--'  | /  O  / '   .-'|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.|  | |  ||  |/  /    |  |   |  |  |  ||  | |  |.-'    |`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'wiki      https://alibaba.github.io/arthastutorials https://alibaba.github.io/arthas/arthas-tutorialsversion   3.1.7pid       30725time      2020-01-30 15:48:33

輸出 help 命令,可以看到所有支持的命令列表。今天,我們會用到 dashboard、thread、jadwatchognl 命令,來定位這個 HighCPUApplication 進(jìn)程。你可以通過官方文檔:https://arthas.aliyun.com/doc/commands.html,查看這些命令的完整介紹:dNH28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片dNH28資訊網(wǎng)——每日最新資訊28at.com

dashboard 命令用于整體展示進(jìn)程所有線程、內(nèi)存、GC 等情況,其輸出如下:dNH28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片dNH28資訊網(wǎng)——每日最新資訊28at.com

可以看到,CPU 高并不是 GC 引起的,占用 CPU 較多的線程有 8 個,其中 7 個是 ForkJoinPool.commonPool。dNH28資訊網(wǎng)——每日最新資訊28at.com

ForkJoinPool.commonPool 是并行流默認(rèn)使用的線程池。dNH28資訊網(wǎng)——每日最新資訊28at.com

所以,此次 CPU 高的問題,應(yīng)該出現(xiàn)在某段并行流的代碼上。dNH28資訊網(wǎng)——每日最新資訊28at.com

接下來,要查看最繁忙的線程在執(zhí)行的線程棧,可以使用 thread -n 命令。這里,我們查看下最忙的 8 個線程:dNH28資訊網(wǎng)——每日最新資訊28at.com

thread -n 8

輸出如下:dNH28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片dNH28資訊網(wǎng)——每日最新資訊28at.com

可以看到,由于這些線程都在處理 MD5 的操作,所以占用了大量 CPU 資源。我們希望分析出代碼中哪些邏輯可能會執(zhí)行這個操作,所以需要從方法棧上找出我們自己寫的類,并重點關(guān)注。dNH28資訊網(wǎng)——每日最新資訊28at.com

由于主線程也參與了 ForkJoinPool 的任務(wù)處理,因此我們可以通過主線程的棧看到需要重點關(guān)注 org.geekbang.time.commonmistakes.troubleshootingtools.highcpu.HighCPUApplication 類的 doTask 方法。dNH28資訊網(wǎng)——每日最新資訊28at.com

接下來,使用 jad 命令直接對 HighCPUApplication 類反編譯:dNH28資訊網(wǎng)——每日最新資訊28at.com

jad org.geekbang.time.commonmistakes.troubleshootingtools.highcpu.HighCPUApplication

可以看到,調(diào)用路徑是 main->task()->doTask(),當(dāng) doTask 方法接收到的 int 參數(shù)等于某個常量的時候,會進(jìn)行 1 萬次的 MD5 操作,這就是耗費 CPU 的來源。那么,這個魔法值到底是多少呢?dNH28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片dNH28資訊網(wǎng)——每日最新資訊28at.com

你可能想到了,通過 jad 命令繼續(xù)查看 User 類即可。這里因為是 Demo,所以我沒有給出很復(fù)雜的邏輯。在業(yè)務(wù)邏輯很復(fù)雜的代碼中,判斷邏輯不可能這么直白,我們可能還需要分析出 doTask 的“慢”會慢在什么入?yún)⑸稀?span style="display:none">dNH28資訊網(wǎng)——每日最新資訊28at.com

這時,我們可以使用 watch 命令來觀察方法入?yún)ⅰH缦旅睿硎拘枰O(jiān)控耗時超過 100 毫秒的 doTask 方法的入?yún)ⅲ⑶逸敵鋈雲(yún)ⅲ归_ 2 層入?yún)?shù):dNH28資訊網(wǎng)——每日最新資訊28at.com

watch org.geekbang.time.commonmistakes.troubleshootingtools.highcpu.HighCPUApplication doTask '{params}' '#cost>100' -x 2

可以看到,所有耗時較久的 doTask 方法的入?yún)⒍际?0,意味著 User.ADMN_ID 常量應(yīng)該是 0。dNH28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片dNH28資訊網(wǎng)——每日最新資訊28at.com

最后,我們使用 ognl 命令來運行一個表達(dá)式,直接查詢 User 類的 ADMIN_ID 靜態(tài)字段來驗證是不是這樣,得到的結(jié)果果然是 0:dNH28資訊網(wǎng)——每日最新資訊28at.com

[arthas@31126]$ ognl '@org.geekbang.time.commonmistakes.troubleshootingtools.highcpu.User@ADMIN_ID'@Integer[0]

需要額外說明的是,由于 monitor、trace、watch 等命令是通過字節(jié)碼增強技術(shù)來實現(xiàn)的,會在指定類的方法中插入一些切面來實現(xiàn)數(shù)據(jù)統(tǒng)計和觀測,因此診斷結(jié)束要執(zhí)行 shutdown 來還原類或方法字節(jié)碼,然后退出 Arthas。dNH28資訊網(wǎng)——每日最新資訊28at.com

在這個案例中,我們通過 Arthas 工具排查了高 CPU 的問題:dNH28資訊網(wǎng)——每日最新資訊28at.com

  • 首先,通過 dashboard + thread 命令,基本可以在幾秒鐘內(nèi)一鍵定位問題,找出消耗 CPU 最多的線程和方法棧;
  • 然后,直接 jad 反編譯相關(guān)代碼,來確認(rèn)根因;
  • 此外,如果調(diào)用入?yún)⒉幻鞔_的話,可以使用 watch 觀察方法入?yún)ⅲ⒏鶕?jù)方法執(zhí)行時間來過濾慢請求的入?yún)ⅰ?/li>

可見,使用 Arthas 來定位生產(chǎn)問題根本用不著原始代碼,也用不著通過增加日志來幫助我們分析入?yún)ⅲ粋€工具即可完成定位問題、分析問題的全套流程。dNH28資訊網(wǎng)——每日最新資訊28at.com

對于應(yīng)用故障分析,除了阿里 Arthas 之外,還可以關(guān)注去哪兒的Bistoury :https://github.com/qunarcorp/bistoury工具,其提供了可視化界面,并且可以針對多臺機器進(jìn)行管理,甚至提供了在線斷點調(diào)試等功能,模擬 IDE 的調(diào)試體驗。dNH28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-15212-0.html實戰(zhàn)!使用阿里 Arthas 工具分析 CPU 飆高

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 嵌入式框架設(shè)計中的四種常用模式

下一篇: Vue 3.3.6 發(fā)布,得益于WeakMap,它更快了

標(biāo)簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網(wǎng)課的原因激活了平板市場,如今網(wǎng)課的時代已經(jīng)過去,大家的生活都恢復(fù)到了正軌,這也就意味著,真正考驗平板電腦生存的環(huán)境來了。也就是面對著這種殘酷的
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對Reader和Writer接口的組合,
  • 一篇聊聊Go錯誤封裝機制

    %w 是用于錯誤包裝(Error Wrapping)的格式化動詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數(shù)中的一個特殊格式化動詞,用于將一個錯誤(或其他可打印的值)包裝在一個新的錯誤中。使
  • Temu起訴SHEIN,跨境電商戰(zhàn)事升級

    來源 | 伯虎財經(jīng)(bohuFN)作者 | 陳平安日前據(jù)外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein“利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 自律,給不了Keep自由!

    來源 | 互聯(lián)網(wǎng)品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    作者:彭寬鴻來源:華爾街科技眼‍‍‍‍‍‍‍‍‍‍東方甄選創(chuàng)始人俞敏洪帶隊的“7天甘肅行”直播活動已在近日順利收官。成立后一
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發(fā)布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時代麒麟電池,容量為101kWh,電壓為726.7V,可以預(yù)測小
  • 三星推出Galaxy Tab S9系列平板電腦以及Galaxy Watch6系列智能手表

    2023年7月26日,三星電子正式發(fā)布了Galaxy Z Flip5與Galaxy Z Fold5。除此之外,Galaxy Tab S9系列平板電腦以及三星Galaxy Watch6系列智能手表也同期
  • 微軟發(fā)布Windows 11新版 引入全新任務(wù)欄狀態(tài)

    近日,微軟發(fā)布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務(wù)欄等,系統(tǒng)更流暢了。更新中,Windows 11加入了專門針對平板優(yōu)化的任務(wù)欄
Top 主站蜘蛛池模板: 翁牛特旗| 孟村| 丹巴县| 化德县| 泰州市| 平邑县| 梁河县| 黄龙县| 广宁县| 九江市| 沙田区| 连云港市| 绥江县| 穆棱市| 芷江| 怀来县| 公安县| 双桥区| 汉中市| 都安| 尚义县| 奎屯市| 图们市| 旌德县| 泗阳县| 娄烦县| 墨玉县| 秀山| 广元市| 罗源县| 木兰县| 墨竹工卡县| 石台县| 迭部县| 蒲江县| 容城县| 随州市| 五大连池市| 榆林市| 任丘市| 双城市|