色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Arthas火焰圖工具的Java應用性能分析和優化經驗

OSC開源社區 ? 來源:阿里云開發者 ? 2024-10-28 09:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

以下文章來源于阿里云開發者,作者譽銘

導讀

分享作者在使用Arthas火焰圖工具進行Java應用性能分析和優化的經驗。

看到標題是不是很多人在想是不是標題黨了,是也不是~,請聽我細細道來~

我們的應用代碼是用Java寫的,因此使用的火焰圖工具是Arthas,下面的分析也是基于此。

Arthas火焰圖使用

啟動火焰圖分析


$ profiler start
Started [cpu] profiling

停止


$ profiler stop --format flamegraph
profiler output file: /tmp/test/arthas-output/20211207-111550.html
OK

如上所示默認會生成一個html的火焰圖文件,指定輸出格式相關可參考官方文檔。

火焰圖示例

0bfa336a-9409-11ef-a511-92fbcf53809c.png

火焰圖橫軸代表CPU的占用時間,橫軸越寬代表CPU占用越多,鼠標移動上去也可以看到這個方法究竟占用了多少CPU。

縱軸代表調用棧,火焰越高代表調用棧越深。

其中綠色部分代表Java代碼,黃色部分代表JVM C++代碼,橙色部分代表內核態C語言代碼,紅色代表用戶態C語言代碼。

如何分析火焰圖(附實戰)

事情是這樣的,我們的業務簡單來說就是監聽發貨消息后執行一系列操作,分自動和批量兩種方式,批量的大用戶進行業務操作時,會同時有幾萬單、十幾萬單的產生,相當于大促時的流量了,因此cpu占用總是有尖刺,有時單機甚至能到80+%。而且日常流量時感覺cpu占用和流量數據相比也有些偏高,因此決定使用火焰圖分析下。

從上往下看

下面采用兩個在優化過程中比較典型的兩個案例。

案例一

0c164d16-9409-11ef-a511-92fbcf53809c.png

火焰圖分析最簡單的方式就是找大平頂,如果一個方法占用比較耗時、調用次數很多,那么他的橫軸一定是比較寬的,體現到火焰圖上就是一個大平頂。

圖中紅框是業務代碼的執行,其中藍框是初步定位到的耗時操作,點開后可以看到左側是sentinel采樣CPU占用,占用總CPU3%~4%,這部分應該是不會隨流量上升而升高的, 這次就先沒有動這塊。第二塊是在metaq的消費者代碼里執行的,因此重點關注,因為我們的應用是消息驅動的,接受tp的發貨消息后進行對應的操作,metaq流量升高,這部分對應的操作大概率也是會隨之升高的。

0c1b55f4-9409-11ef-a511-92fbcf53809c.png

0c33415a-9409-11ef-a511-92fbcf53809c.png

占總CPU占用達到了驚人的9.3%。 點開后可以看到是脫敏工具,其對性能的影響幾乎和發貨消息齊平了,排查后發現是我們部門內部使用的鏈路采集工具,在采集metaq消息時會對消息進行脫敏處理,脫敏工具會對姓名、郵箱、手機號等分別進行正則匹配,而我們接收的交易消息中是包含整個訂單信息的,這個對象是很大的(包含擴展字段等諸多信息),對其使用正則進行脫敏工作量巨大。正常情況下使用此工具采集線上流量對性能影響不是很大,但是在我們的場景影響有點出乎意料...... 由于我們平時基本不會在鏈路圖上關注消息的內容,一般都是用來看HSF鏈路,因此直接把dp對metaq的采集關閉了。

案例二

0c38d2a0-9409-11ef-a511-92fbcf53809c.png

0c689134-9409-11ef-a511-92fbcf53809c.png

0c88e9ac-9409-11ef-a511-92fbcf53809c.png

使用全局搜索后居然占用了將近6%的CPU,這可是日常的流量下截取的火焰圖,系統流量升高時占用比例會更大。 點開后可以看到是進行HSF調用的時候,獲取Java調用棧比較耗時,之前寫代碼的時候懷疑過獲取調用棧會比較耗性能,但沒想到居然比一次HSF調用本身的耗時都大了。這個地方之前是為了獲取調用來源,打印到日志中方便排查問題的(歷史代碼),后續將HSF的調用日志改成了通過HSF Filter的方式,去掉了獲取調用棧的邏輯。 其實案例二我一開始不是從上往下看定位到的,因為調用HSF的地方不止一個,每個耗時其實也不長,整體看的話從上往下還是比較難發現的。

從下往上看

案例二

如果從上往下看效果不明顯,可以從我們系統主要流量入口處進行分析,從下面入口一步步往上點,也可以發現問題,帶著懷疑的態度來找,上述的案例二我一開始并沒有注意到上方的問題,我是一步步從消息入口看,然后點到上面發現的這個調用消耗居然比HSF多的。

0c8c56d2-9409-11ef-a511-92fbcf53809c.png

可以看到這個調用不是集中在一個地方的,細看每個地方都有調用,所以整體對性能的影響才那么大。 全局搜索后可以看到到處都有調用(圖示紫色部分)。

0c91cdba-9409-11ef-a511-92fbcf53809c.png

從下往上找更適合細化的時候,專門對某個鏈路進行分析優化。

優化效果

下面來讓我們計算一下數據,來看看樓主是不是標題黨了。

0c98511c-9409-11ef-a511-92fbcf53809c.png

整體大致優化了5~6%左右(7月份的時候,機器數量是30臺,8月縮容到了27臺),取5%,其中系統CPU占用在6.5%左右,從日常流量上來看,用戶態cpu從26%到21%,下降19%+,考慮縮容的關系,20%的優化大抵是有的。 由于這是日常流量的優化結果,大促流量突增時,系統負載降低應該會更明顯,優化后大用戶批量操作時瞬時流量也基本不會有機器cpu占用超過60%了。 后續雙十一壓測也會繼續關注優化,流量上升后更多問題可能就會暴露出來。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11074

    瀏覽量

    216841
  • JAVA
    +關注

    關注

    20

    文章

    2988

    瀏覽量

    109303
  • 代碼
    +關注

    關注

    30

    文章

    4899

    瀏覽量

    70599

原文標題:我是如何通過火焰圖分析讓應用CPU占用下降近20%的

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    OpenHarmony之開機優化

    OpenHarmony已經支持了Bootchart工具,我們可以直接使用Bootchart工具,Bootchart工具介紹如下: 概述 Bootchart是一個用于系統啟動過程性能
    發表于 07-01 16:39

    高薪聘JAVA工程師

    ; 2、深入理解業務需求,分析和發現系統的優化點,負責推動產品性能和架構優化; 3、對所負責系統進行規劃,并結合項目不斷優化和升級,提高
    發表于 05-27 16:23

    詳解java代碼優化方法

    性能下降,JDK7之后,可以使用ThreadLocalRandom來獲取隨機數44. 靜態類、單例類、工廠類將它們的構造函數置為private以上是常用的Java代碼優化方法,在Java
    發表于 04-02 15:43

    針對于Java的35 個代碼性能優化總結

    針對于Java的35 個代碼性能優化總結 前言代碼優化,一個很重要的課題。可能有些人覺得沒用,一些細小的地方有什么好修改的,改與不改對于代碼的運行效率有什么影響呢?這個問題我是這么考慮
    發表于 06-19 21:03

    嵌入式Java虛擬機的性能優化技術

    ——JMO+(JMOplus)的性能優化技術。 在過去的幾年里,Java已經在各個領域得到了廣泛的應用,尤其是無線移動領域,全球180多個移動運營商已經推出了Java下載服務。無線手持
    發表于 07-18 06:26

    關于java性能優化的一些細節

    優化。此舉能夠使性能平均提高50% 。2、盡量重用對象特別是String對象的使用,出現字符串連接時應該使用StringBuilder/StringBuffer代替。由于Java虛擬機不僅要花時間生成
    發表于 10-11 09:23

    Arm高性能計算工具試用分析

    全球排名前20的超級計算機用戶中有70%使用Arm工具來快速理解應用程序性能,并通過調試、分析優化更快地獲得結果努力。
    發表于 08-02 09:51

    【技術視界】鴻蒙開發套件之DevEco Profiler助您輕松分析應用性能問題

    作者:shizhengtao,華為性能調優工具專家 應用的性能優化一直以來都是開發者所面臨的一大難題,在2023HDC大會上全新亮相的HarmonyOS NEXT開發者預覽版,其中鴻蒙
    發表于 09-15 15:55

    JAVA教程之圖片火焰效果

    JAVA教程之圖片火焰效果,很好的JAVA的資料,快來學習吧
    發表于 04-11 17:14 ?5次下載

    Arthas可以解決哪些問題

    診斷利器 Arthas,是阿里的一款開源工具。Github-alibaba/arthas 上可以看到它的介紹
    的頭像 發表于 12-24 14:22 ?1005次閱讀

    技術速遞 | Java Agent場景性能測試分析優化經驗分享

    能力產生一定的性能影響,作為一個基于Java Agent技術做服務治理的框架,我們需要在保證服務治理能力生效的同時,極小的影響微服務原有的服務性能。 雖然基于Java Agent的服務
    的頭像 發表于 03-25 07:55 ?1036次閱讀

    Arthas -- 一款釋放潛力的神器

    阿里巴巴 Arthas 是一個診斷工具,可以用于監視、分析和解決 Java 應用程序的問題。使用 Arthas 的一個主要優點是,我們不需要
    的頭像 發表于 07-05 11:21 ?760次閱讀
    <b class='flag-5'>Arthas</b> -- 一款釋放潛力的神器

    【技術視界】鴻蒙開發套件之DevEco Profiler助您輕松分析應用性能問題

    的是華為性能調優工具專家的分享,希望能為您的應用性能優化帶來啟發~ 作者:shizhengtao,華為性能調優
    的頭像 發表于 09-15 12:15 ?1571次閱讀
    【技術視界】鴻蒙開發套件之DevEco Profiler助您輕松<b class='flag-5'>分析</b><b class='flag-5'>應用性能</b>問題

    jvm內存分析命令和工具

    JVM內存分析Java開發和調優過程中非常重要的一部分。通過對JVM內存分析命令和工具的深入了解和使用,可以幫助開發人員識別內存泄漏、性能
    的頭像 發表于 12-05 11:07 ?1585次閱讀

    解決應用性能問題的策略

    指標。本文重點介紹應用開發過程中使用性能工具性能優化文章定位分析性能問題流程,目前DevEco
    的頭像 發表于 04-24 11:42 ?227次閱讀
    解決<b class='flag-5'>應用性能</b>問題的策略
    主站蜘蛛池模板: 国产精品单位女同事在线 | 麻花传媒XK在线观看 | 青青在线视版在线播放 | 在线播放av欧美无码碰 | 国产精品麻豆AV | 国产精品一区二区AV白丝在线 | 高清无码中文字幕影片 | 欧美在线亚洲综合国产人 | 男人插女人动态 | 久久热免费观看视频 | 在线观看视频中文字幕 | 亚洲欧美综合中文字幕 | 性一交一无一伦一精一品 | 中文字幕AV亚洲精品影视 | 美女脱了内裤张开腿让男人桶到爽 | 国产97视频在线观看 | 国产精品视频人人做人人爽 | 日欧一片内射VA在线影院 | 91avcom| 国产精品亚洲在钱视频 | 亚洲三级在线视频 | 亚洲欧洲日本无在线码播放 | 亚洲欧美日本中文子不卡 | 国产成人亚洲精品午夜国产馆 | 一个吃奶两个添下面H | 医生含着我的奶边摸边做 | 一区二区不卡在线视频 | 午夜亚洲WWW湿好爽 午夜亚洲WWW湿好大 | 日韩精品一区VR观看 | 国产精品一区二区三区四区五区 | 亚洲精品一卡二卡三卡四卡2021 | 大胸美女被C得嗷嗷叫动态图 | 大肥婆丰满大肥奶bbw肥 | 伊人热人久久中文字幕 | 亚洲视频免费看 | 亚洲AV怡红院影院怡春院 | 91popny蜜桃臀| 国产啪视频在线播放观看 | 久久这里只有热精品18 | 国产传媒麻豆剧精品AV | 久久机热视频 这里只有精品首页 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品