最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java之生產(chǎn)故障定位Arthas問(wèn)題

 更新時(shí)間:2022年06月07日 15:17:27   作者:enjoy囂士  
這篇文章主要介紹了java之生產(chǎn)故障定位Arthas問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

生產(chǎn)故障定位Arthas

Arthas(阿爾薩斯)能為你做什么?

Arthas 是Alibaba開(kāi)源的Java診斷工具,深受開(kāi)發(fā)者喜愛(ài)。當(dāng)你遇到以下類似問(wèn)題而束手無(wú)策時(shí),Arthas可以幫助你解決:

  • 這個(gè)類從哪個(gè) jar 包加載的?為什么會(huì)報(bào)各種類相關(guān)的 Exception?
  • 我改的代碼為什么沒(méi)有執(zhí)行到?難道是我沒(méi) commit?分支搞錯(cuò)了?
  • 遇到問(wèn)題無(wú)法在線上 debug,難道只能通過(guò)加日志再重新發(fā)布嗎?
  • 線上遇到某個(gè)用戶的數(shù)據(jù)處理有問(wèn)題,但線上同樣無(wú)法 debug,線下無(wú)法重現(xiàn)!
  • 是否有一個(gè)全局視角來(lái)查看系統(tǒng)的運(yùn)行狀況?
  • 有什么辦法可以監(jiān)控到JVM的實(shí)時(shí)運(yùn)行狀態(tài)?
  • 怎么快速定位應(yīng)用的熱點(diǎn),生成火焰圖?

Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同時(shí)提供豐富的 Tab 自動(dòng)補(bǔ)全功能,進(jìn)一步方便進(jìn)行問(wèn)題的定位和診斷。

熟悉C++的同學(xué),應(yīng)該了解GDB調(diào)試工具。Arthas就是java版的GDB工具。

如果想了解學(xué)習(xí),可以按照 這個(gè)文檔來(lái) 學(xué)習(xí)實(shí)踐

當(dāng)然,官網(wǎng) 是最好的。

java診斷工具Arthas(watch命令)方法觀察神器

能方便的觀察到指定方法的調(diào)用情況。能觀察到的范圍為:返回值、拋出異常、入?yún)ⅰ?nbsp;

watch

1、得到要觀察類的類屬性以及值,調(diào)用類方法

2、得到類對(duì)象的屬性以及值

3、得到方法調(diào)用前后的入?yún)?、出參?/p>

4、根據(jù)調(diào)用時(shí)長(zhǎng),入?yún)⑵ヅ錀l件,異常情況過(guò)濾方法調(diào)用情況

參數(shù)說(shuō)明

watch 的參數(shù)比較多,主要是因?yàn)樗茉?4 個(gè)不同的場(chǎng)景觀察對(duì)象。

參數(shù)名稱參數(shù)說(shuō)明
class-pattern類名表達(dá)式匹配
method-pattern方法名表達(dá)式匹配
express觀察表達(dá)式,默認(rèn)值:{params, target, returnObj}
condition-express條件表達(dá)式
[b]在方法調(diào)用之前觀察
[e]在方法異常之后觀察
[s]在方法返回之后觀察
[f]在方法結(jié)束之后(正常返回和異常返回)觀察
[E]開(kāi)啟正則表達(dá)式匹配,默認(rèn)為通配符匹配
[x:]指定輸出結(jié)果的屬性遍歷深度,默認(rèn)為 1

特別說(shuō)明

  • watch 命令定義了4個(gè)觀察事件點(diǎn),即 -b 方法調(diào)用前,-e 方法異常后,-s 方法返回后,-f 方法結(jié)束后
  • 4個(gè)觀察事件點(diǎn) -b、-e、-s 默認(rèn)關(guān)閉,-f 默認(rèn)打開(kāi),當(dāng)指定觀察點(diǎn)被打開(kāi)后,在相應(yīng)事件點(diǎn)會(huì)對(duì)觀察表達(dá)式進(jìn)行求值并輸出
  • 這里要注意方法入?yún)⒑头椒ǔ鰠⒌膮^(qū)別,有可能在中間被修改導(dǎo)致前后不一致,除了 -b 事件點(diǎn) params 代表方法入?yún)⑼?,其余事件都代表方法出?/li>
  • 當(dāng)使用 -b 時(shí),由于觀察事件點(diǎn)是在方法調(diào)用前,此時(shí)返回值或異常均不存在
  • 在watch命令的結(jié)果里,會(huì)打印出location信息。location有三種可能值:AtEnter,AtExit,AtExceptionExit。對(duì)應(yīng)函數(shù)入口,函數(shù)正常return,函數(shù)拋出異常。

 1、觀察方法入?yún)?/strong>

watch demo.MathGame primeFactors "{params,returnObj}" -x 2 -b

執(zhí)行結(jié)果如下圖所示 

 result中的Object數(shù)組為入?yún)?,類型為Integer值分別為-198028,-134246,-2551等。

-b表示觀察點(diǎn)為方法調(diào)用前。此時(shí)方法剛封裝好形參,還沒(méi)有進(jìn)入方法執(zhí)行體。

2、同時(shí)觀察方法調(diào)用前和方法返回后

watch demo.MathGame primeFactors "{params,target,returnObj}" -x 2 -b -s -n 2

以上命令可以將調(diào)用方法前(-b參數(shù))"{params,target,returnObj}"即入?yún)?,this對(duì)象和返回參數(shù)返回。

可以將調(diào)用方法返回后(-s參數(shù))的"{params,target,returnObj}"即入?yún)?,this對(duì)象和返回參數(shù)返回。

如果參數(shù)形式為"{params,returnObj}"只返回入?yún)⒑突貐ⅰ?/p>

以上所有結(jié)果均在result中體現(xiàn)。

  • 參數(shù)里-n 2,表示只執(zhí)行兩次
  • 這里輸出結(jié)果中,第一次輸出的是方法調(diào)用前的觀察表達(dá)式的結(jié)果,第二次輸出的是方法返回后的表達(dá)式的結(jié)果
  • 結(jié)果的輸出順序和事件發(fā)生的先后順序一致,和命令中 -s -b 的順序無(wú)關(guān)

3、 調(diào)整-x的值,觀察具體的方法參數(shù)值

watch demo.MathGame primeFactors "{params,target,returnObj}" -x 3 -b -s -n 2

-x表示遍歷深度,可以調(diào)整來(lái)打印具體的參數(shù)和結(jié)果內(nèi)容,默認(rèn)值是1。

可以看到MathGame類的實(shí)例中的屬性和值。

4、入?yún)l件表達(dá)式

watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0 -b

過(guò)濾出來(lái)方法調(diào)用前匹配條件為參數(shù)>0的入?yún)⒑蛅his對(duì)象,只有滿足條件的調(diào)用才會(huì)返回。

5、按照耗時(shí)進(jìn)行過(guò)濾

watch demo.MathGame primeFactors '{params, returnObj}' '#cost>2' -x 2

過(guò)濾出來(lái)時(shí)長(zhǎng)調(diào)用大于2ms的。

6、觀察異常信息

watch demo.MathGame primeFactors "{params[0],throwExp}" -e -x 2

  • -e 表示拋出異常時(shí)才觸發(fā)
  • express中,表示異常信息的變量是throwExp

7、訪問(wèn)當(dāng)前對(duì)象中的某個(gè)屬性

watch demo.MathGame primeFactors 'target.illegalArgumentCount'

8、獲取類的靜態(tài)字段、調(diào)用類的靜態(tài)方法

獲取類的靜態(tài)字段

 watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -v -n 1 -x 2

調(diào)用類的靜態(tài)方法。

參考:arthas官方文檔

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • jdbc實(shí)現(xiàn)寵物商店管理系統(tǒng)

    jdbc實(shí)現(xiàn)寵物商店管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了jdbc實(shí)現(xiàn)寵物商店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • SpringBoot+SpringSession+Redis實(shí)現(xiàn)session共享及唯一登錄示例

    SpringBoot+SpringSession+Redis實(shí)現(xiàn)session共享及唯一登錄示例

    這篇文章主要介紹了SpringBoot+SpringSession+Redis實(shí)現(xiàn)session共享及唯一登錄示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 詳解SpringBoot如何實(shí)現(xiàn)多環(huán)境配置

    詳解SpringBoot如何實(shí)現(xiàn)多環(huán)境配置

    在實(shí)際的軟件開(kāi)發(fā)過(guò)程中,一個(gè)應(yīng)用程序通常會(huì)有多個(gè)環(huán)境,pring?Boot?提供了一個(gè)非常靈活和強(qiáng)大的方式來(lái)管理這些環(huán)境配置,下面就跟隨小編一起學(xué)習(xí)一下吧
    2023-07-07
  • 詳解spring中aop不生效的幾種解決辦法

    詳解spring中aop不生效的幾種解決辦法

    這篇文章主要介紹了詳解spring中aop不生效的幾種解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java中LocalCache本地緩存實(shí)現(xiàn)代碼

    Java中LocalCache本地緩存實(shí)現(xiàn)代碼

    本篇文章主要介紹了Java中LocalCache本地緩存實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 解決Aop @AfterReturning因返回類型不一致導(dǎo)致無(wú)法執(zhí)行切面代碼

    解決Aop @AfterReturning因返回類型不一致導(dǎo)致無(wú)法執(zhí)行切面代碼

    這篇文章主要介紹了解決Aop @AfterReturning因返回類型不一致導(dǎo)致無(wú)法執(zhí)行切面代碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • SpringBoot使用WebSocket實(shí)現(xiàn)向前端推送消息功能

    SpringBoot使用WebSocket實(shí)現(xiàn)向前端推送消息功能

    WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議,它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工(full-duplex)通信——允許服務(wù)器主動(dòng)發(fā)送信息給客戶端,本文給大家介紹了SpringBoot使用WebSocket實(shí)現(xiàn)向前端推送消息功能,需要的朋友可以參考下
    2024-05-05
  • 關(guān)于@RequestBody和@RequestParam注解的使用詳解

    關(guān)于@RequestBody和@RequestParam注解的使用詳解

    這篇文章主要介紹了關(guān)于@RequestBody和@RequestParam注解的使用詳解,本文十分具有參考意義,希望可以幫助到你,如果有錯(cuò)誤的地方還望不吝賜教
    2023-03-03
  • MybatisPlus多表連接查詢的具體實(shí)現(xiàn)

    MybatisPlus多表連接查詢的具體實(shí)現(xiàn)

    MyBatis Plus是一款針對(duì)MyBatis框架的增強(qiáng)工具, 它提供了很多方便的方法來(lái)實(shí)現(xiàn)多表聯(lián)查,本文主要介紹了MybatisPlus多表連接查詢的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Springmvc RequestMapping請(qǐng)求實(shí)現(xiàn)方法解析

    Springmvc RequestMapping請(qǐng)求實(shí)現(xiàn)方法解析

    這篇文章主要介紹了Springmvc RequestMapping請(qǐng)求實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

获嘉县| 兴海县| 仲巴县| 沧源| 叙永县| 拜泉县| 怀宁县| 贵溪市| 拜泉县| 信阳市| 礼泉县| 商洛市| 明水县| 江油市| 铅山县| 东方市| 喀什市| 平度市| 瑞金市| 定远县| 栖霞市| 璧山县| 贺兰县| 东台市| 云林县| 南宁市| 兴城市| 渝中区| 禹城市| 资兴市| 松桃| 汤原县| 宁波市| 三江| 昌邑市| 铜川市| 凌云县| 长海县| 孝感市| 晴隆县| 铁岭市|