国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

利用Arthas+APM監(jiān)控進行Java性能深度定位

這篇具有很好參考價值的文章主要介紹了利用Arthas+APM監(jiān)控進行Java性能深度定位。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

大家可能都用過APM監(jiān)控,包括開源的Skywalking、商用的卓豪(ZOHO)ManageEngine APM應(yīng)用性能監(jiān)控、以及云監(jiān)控產(chǎn)品如聽云(Server監(jiān)控),這些APM監(jiān)控產(chǎn)品大大方便了我們實時監(jiān)控應(yīng)用性能,并實現(xiàn)性能深度透視監(jiān)控。

但是這些監(jiān)控手段離真正能夠定位性能問題還是有一段距離,有時候可能就差這最后1米的距離,只能找資深開發(fā)人員介入定位分析,有些開發(fā)人員還真沒這水平。但其實我們用好了工具,任何人都可以參與定位分析,甚至不用依賴開發(fā)人員就能找到問題所在,換句話說,測試人員不需要去深度定位分析問題,但至少要找到和開發(fā)人員溝通的橋梁吧,你把APM監(jiān)控的結(jié)果發(fā)給開發(fā)人員,直接做個甩手掌柜,你信不信,開發(fā)人員可能看都不看,直接說那不是他的代碼問題,可能是環(huán)境或配置問題,因為確實可能真不是他的問題,再說了,你會用APM監(jiān)控工具,開發(fā)人員不一樣會用,用的比你還溜,靠工具不是真本事,會用好工具才是真本事(同時你還能結(jié)合業(yè)務(wù)去思考和應(yīng)用,這是開發(fā)人員不具備的)。?

一、APM監(jiān)控可以告訴你慢的方法名

說到web響應(yīng)慢,有很多方法能夠監(jiān)控,比如我們用瀏覽器自帶的開發(fā)者工具就行,像谷歌瀏覽器通過F12,查看network就能看響應(yīng)時間,就拿我最近測試的一個系統(tǒng)當中的導(dǎo)出功能來實驗:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

可以看到導(dǎo)出的請求,響應(yīng)時間12.4秒,大部分時間花在等待服務(wù)器響應(yīng),這時候我們會說這個接口請求很慢,但我們無法知道慢的方法名,因為我們最多就捕獲到了請求接口:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

通過性能測試工具如JMeter,也一樣的道理,我們只知道哪個請求哪個接口慢,不知道哪個方法調(diào)用慢,但通過APM監(jiān)控就可以知道這個請求較慢的方法,包括類名和方法名:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

通過APM監(jiān)控的慢事務(wù)分解,我們能看到類名是com.nfschina.controller.ExportController,其調(diào)用方法是exportLoophole

二、APM監(jiān)控無法看到多層次的調(diào)用邏輯

看到了入口方法,我們肯定想知道下一層的方法是什么,想進一步深度探索,這在大部分的APM監(jiān)控是做不到了,比如我們就看事務(wù)的慢組件分解,如下所示:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

這個表能看出com.nfschina.controller.ExportController的方法多層調(diào)用嗎?什么也看不出來,只是列出了方法調(diào)用的第一層方法鏈,ExportController為什么慢,還是根本不知道,不過這里還是能排除慢SQL問題(通過PreparedStatement/execute執(zhí)行時間),至于代碼為什么慢的問題是看不出來的,因為這只是第一層代碼調(diào)用關(guān)系。

三、利用Arthas進行深度追蹤

雖然我們作測試時,不能直接定位到性能慢的原因,但至少可以給開發(fā)人員提供慢事務(wù)的方法名,以及平均響應(yīng)時間數(shù)據(jù),本身也是價值很大。開發(fā)得到這些數(shù)據(jù),就可以進一步定位分析。同樣我們測試人員也可以嘗試用開發(fā)的工具去進一步定位分析,比如Arthas:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

?如上圖,我們第一步,通過 trace?com.nfschina.controller.ExportController exportLoophole追蹤到了慢的方法為com.github.liaochong.myexecl.core.ExcelBuilder下的build,到這里就可以判斷出慢的組件是myexcel,我們再一步步深入追蹤:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

最后我們追蹤到是myexcel組件的createRow方法慢(響應(yīng)時間占99.73%),其實就是mysql的數(shù)據(jù)導(dǎo)出后創(chuàng)建excel的table行數(shù)據(jù)很慢。

四、利用Arthas進一步獲取異常信息

APM監(jiān)控除了能捕獲慢事務(wù)方法,還可以捕獲異常信息的方法,如下所示:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

通過監(jiān)控,我們可以看出錯誤方法的名稱及傳參,并且拋出的異常信息是CustomException,如果我們覺得不夠清晰,其實我們還可以用Arthas進一步查看和追蹤異常信息,如下:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

其實這只是個思路,因為Java的異常信息可能也是一層層上拋的,所以通過Arthas的命令是可以一層層的去追蹤報錯信息。

五、Arthas并不是萬能的

通過上面的例子,你可能會覺得用Arthas定位Java性能問題簡直無所不能,其實不是,引起Java性能問題的因素千種萬種,可能就不是你說的那一種,有些問題不是Java代碼的問題,但也可能會映射成是Java的代碼問題,因為軟件架構(gòu)各式各樣,代碼之間互相調(diào)來調(diào)去,再加上環(huán)境千差萬別,各種因素互相干擾,所以你還要有足夠的敏銳度和經(jīng)驗去排查,以下我拿上面報異常的方法做個例子,這個方法之所以報異常,其實是和性能不穩(wěn)定也有關(guān),有時候響應(yīng)很快,不到300ms,有時候很慢,高于15s,甚至直接報異常了。我們通過arthas反復(fù)一層層trace,去找到慢的原因:

1、首先我通過APM監(jiān)控獲取它的慢方法名

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

?2、然后開始arthas追蹤獲取下一層慢方法

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

?3、繼續(xù)一層層往下追蹤

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

從上圖可以看出,我們trace的時候,發(fā)現(xiàn)不是每次響應(yīng)時間都很慢的,在同一層trace時,我們是多執(zhí)行一兩遍系統(tǒng)功能操作,才trace到慢的情況,說明這個功能屬于性能不穩(wěn)定。?

4、不要一味的窮盡trace

當我們trace到這一步是,發(fā)現(xiàn)好像跟IO讀取有關(guān)了,如下所示:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

這時候我們就要思考了,這個業(yè)務(wù)是屬于IO占用高的事務(wù)嗎?顯然不是呀,這只是個通過漏洞CVE編碼去官網(wǎng)獲取漏洞詳情事務(wù)的請求,請求和獲取的數(shù)據(jù)量都很小,也不需要去查詢SQL。這時候我們就要排除是否Java代碼的問題,因為不排除的話,這樣一直trace下去就會越來越迷茫,因為都超出正常業(yè)務(wù)代碼的范圍了。另外就算是IO問題或網(wǎng)絡(luò)問題,這也要涉及到和其他監(jiān)控工具結(jié)合監(jiān)控,比如通過查看服務(wù)器找找哪個進程線程占用IO高,總之,思路也得轉(zhuǎn)變了。

基于我對這個業(yè)務(wù)的了解,我判斷不太可能是簡單的IO問題,我們首先思考這個方法除了Java代碼本身,還有沒有調(diào)用第三方的東西。通過從開發(fā)那了解到,這個業(yè)務(wù)其實是調(diào)用一個工具去第三方的網(wǎng)站爬取數(shù)據(jù),這個工具是用go語言寫的,和Java沒關(guān)。所以我們花大把時間在這用arthas去追蹤Java的性能問題,根本是在浪費時間。以上只是舉個例子,就是告訴我們無論什么時候,都要有獨立的判斷能力,不能沉浸于工具帶給我們的方便,而放棄了思考。

既然,找到了是這個go語言寫的小工具的性能問題,那我們就直接調(diào)用和測試這個小工具,拋開Java的干擾,同時優(yōu)化性能也可以從Java語言轉(zhuǎn)移到這個golang小工具了,以下是通過JMeter對這個小工具的測試報告(單用戶測試),發(fā)現(xiàn)確實是性能不穩(wěn)定:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

?響應(yīng)時間波動非常大:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

在單用戶下,性能就如此不穩(wěn)定,由于這個golang小工具,還會到漏洞官網(wǎng)去爬取數(shù)據(jù),所以我們直接用JMeter按同樣的調(diào)用邏輯去官網(wǎng)爬取數(shù)據(jù)(繞開這個工具),看看對方的網(wǎng)站性能如何:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

性能很高,兩個接口加起來平均也不到200ms,再看響應(yīng)時間波動和網(wǎng)絡(luò)流量,都不大(響應(yīng)時間有較大抖動,但最大響應(yīng)時間都不高),如下所示:

利用Arthas+APM監(jiān)控進行Java性能深度定位,性能監(jiān)控技術(shù),# 性能測試,# 性能監(jiān)控,java,jmeter,Arthas,性能監(jiān)控,APM,性能優(yōu)化

說明,golang小工具爬取數(shù)據(jù)的性能很不穩(wěn)定,不是和網(wǎng)站頁面請求及網(wǎng)絡(luò)性能有關(guān),是它自身的性能問題(當然是否觸發(fā)防爬取也需要考慮),通過排除法也可以告知開發(fā)人員,應(yīng)該好好對這個golang寫的小工具進行性能定位分析,由于本篇講的是APM監(jiān)控+Arthas定位分析問題,至于定位分析golang就需要用到別的工具,如pprof,本篇就不繼續(xù)展開說明了(注:這個性能問題最后發(fā)現(xiàn)主要是由https證書驗證引起,開發(fā)的臨時解決方案是請求https時跳過證書驗證)。文章來源地址http://www.zghlxwxcb.cn/news/detail-633610.html

到了這里,關(guān)于利用Arthas+APM監(jiān)控進行Java性能深度定位的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • java性能安全:OOM問題排查、Arthas分析高CPU問題、防止Dos攻擊

    一、OOM問題 分析流程: 第一步:進程分析,分析老年代回收次數(shù)和消耗時間 第二步:日志分析,找出OOM發(fā)生時間的日志來鎖定執(zhí)行方法,對應(yīng)的機器ip 第三步:找到對應(yīng)的ip機器查看,進一步分析 第四步:下載的dump,使用mat分析堆內(nèi)存,找到堆占用率前3,查看堆指向 問題

    2024年02月03日
    瀏覽(45)
  • DevOps 2.如何利用監(jiān)控工具優(yōu)化應(yīng)用性能?

    作者:禪與計算機程序設(shè)計藝術(shù) 在軟件開發(fā)生命周期中,我們經(jīng)歷了從需求分析、設(shè)計到編碼測試、發(fā)布上線,最后用戶反饋。但隨著互聯(lián)網(wǎng)產(chǎn)品業(yè)務(wù)的快速發(fā)展,日活躍用戶越來越多,同時系統(tǒng)訪問量也越來越高,系統(tǒng)的響應(yīng)時間變慢,最終導(dǎo)致用戶體驗下降甚至崩潰。

    2024年02月07日
    瀏覽(26)
  • 用Arthas快速定位線上JVM問題!

    用Arthas快速定位線上JVM問題!

    ? ? ? ?對于FullGC那一定不會陌生,一般來說會采用橫切FullGC前置攔截(-XX:+HeapDumpBeforeFullGC)和后置攔截(-XX:+HeapDumpAfterFullGC),導(dǎo)出FullGC發(fā)生前后的heap dump文件,以便于我們進行FullGC原因的分析和定位。 ? ? ? ?我們?nèi)绻M梢杂^測到相關(guān)的GC回收次數(shù)以及相關(guān)的時間,

    2024年02月16日
    瀏覽(25)
  • 【JMeter】使用nmon進行性能資源監(jiān)控

    【JMeter】使用nmon進行性能資源監(jiān)控

    目錄 使用nmon進行性能資源監(jiān)控 一、前言 二、nmon的下載安裝 1.查看系統(tǒng)信息 2.查看CPU信息 2.下載 3.解壓 4.一個小問題 三、在性能測試時使用命令行進行監(jiān)控并生成報告 1.在前臺進行資源監(jiān)控 2.在后臺進行資源監(jiān)控 3.在性能測試中使用 4.結(jié)果文件查看 ?在工作中可能會遇到需

    2024年02月05日
    瀏覽(16)
  • FISCO BCOS(十七)利用腳本進行區(qū)塊鏈系統(tǒng)監(jiān)控

    FISCO BCOS(十七)利用腳本進行區(qū)塊鏈系統(tǒng)監(jiān)控

    要利用腳本進行區(qū)塊鏈系統(tǒng)監(jiān)控,你可以使用各種編程語言編寫腳本,如Python、Shell等 利用腳本進行區(qū)塊鏈系統(tǒng)監(jiān)控可以提高系統(tǒng)的穩(wěn)定性、可靠性,并幫助及時發(fā)現(xiàn)和解決潛在問題,從而確保區(qū)塊鏈網(wǎng)絡(luò)的正常運行。本文可以利用腳本來解決兩個問題 1.編寫腳本 1,每隔

    2024年02月22日
    瀏覽(17)
  • JVM-Arthas高效的監(jiān)控工具

    JVM-Arthas高效的監(jiān)控工具

    一、arthas介紹 3.選擇監(jiān)控哪個進程 4.進入具體進程 二、arthas的基礎(chǔ)命令與基本操作 1.查詢包含Java的系統(tǒng)屬性: 命令:sysprop |grep java 1.查詢不含Java的系統(tǒng)屬性: 命令:sysprop | grep -v java 3.打印歷史命令 命令:history 4.查看當前工作目錄 命令:pwd 三、如何使用arthas監(jiān)控線上服務(wù)

    2024年01月23日
    瀏覽(21)
  • 【微服務(wù)治理之監(jiān)控APM】系統(tǒng)監(jiān)控架構(gòu)概述

    【微服務(wù)治理之監(jiān)控APM】系統(tǒng)監(jiān)控架構(gòu)概述

    APM 通常認為是 Application Performance Management 的簡寫,它主要有三個方面的內(nèi)容,分別是 Logs(日志)、 Traces(鏈路追蹤) Metrics(報表統(tǒng)計)。 以后大家接觸任何一個 APM 系統(tǒng)的時候,都可以從這三個方面去分析它到底是什么樣的一個系統(tǒng)。Metrics可以用于服務(wù)告警,Tracing 和 Logging 用于

    2024年02月07日
    瀏覽(26)
  • Arthas協(xié)助MQ消費性能優(yōu)化

    Arthas協(xié)助MQ消費性能優(yōu)化

    項目中使用AWS的SQS消息隊列進行異步處理,QA通過壓測發(fā)現(xiàn)單機TPS在23左右,目標性能在500TPS,所以需要對消費邏輯進行優(yōu)化,提升消費速度。 消費TPS從23提升到500 優(yōu)化的思路是先分析定位性能瓶頸,再針瓶頸進行優(yōu)化。 要定位性能,先要準確評估每秒處理的消費數(shù)量,以及

    2024年02月11日
    瀏覽(33)
  • AI:152- 利用深度學(xué)習(xí)進行手勢識別與控制

    AI:152- 利用深度學(xué)習(xí)進行手勢識別與控制

    本文收錄于專欄:精通AI實戰(zhàn)千例專欄合集 從基礎(chǔ)到實踐,深入學(xué)習(xí)。無論你是初學(xué)者還是經(jīng)驗豐富的老手,對于本專欄案例和項目實踐都有參考學(xué)習(xí)意義。 每一個案例都附帶關(guān)鍵代碼,詳細講解供大家學(xué)習(xí),希望可以幫到大家。正在不斷更新中~ 隨著人工智能技術(shù)的不斷發(fā)

    2024年04月15日
    瀏覽(163)
  • 利用LightHouse進行合理的頁面性能優(yōu)化,看這一篇就夠了!

    利用LightHouse進行合理的頁面性能優(yōu)化,看這一篇就夠了!

    Lighthouse 是一款由 Google 開發(fā)的開源工具,用于評估 Web 應(yīng)用程序的性能和質(zhì)量。它可以分析 Web 應(yīng)用程序的加載速度、渲染性能、可訪問性、可用性和最佳實踐等方面,提供詳細的報告和建議。 官網(wǎng) 1.谷歌打開設(shè)置,搜索輸入商店: 2.下載 Lighthouse : 3.我們從官網(wǎng)上下載一個

    2024年02月05日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包