這段時(shí)間在做產(chǎn)品的性能測(cè)試,一直達(dá)不到壓測(cè)指標(biāo),而且遠(yuǎn)高于壓測(cè)指標(biāo)數(shù)據(jù)。通過(guò)系統(tǒng)運(yùn)行日志,只能體現(xiàn)某個(gè)模塊耗時(shí)長(zhǎng),正常到模塊已經(jīng)足夠分析了,可偏偏這個(gè)模塊對(duì)應(yīng)的業(yè)務(wù)沒(méi)有數(shù)據(jù),數(shù)據(jù)庫(kù)dba也反饋數(shù)據(jù)庫(kù)層面正常,沒(méi)有理由會(huì)慢,所以就就麻煩了。
通過(guò)jvm看內(nèi)存運(yùn)行情況也看不出啥問(wèn)題,跟技術(shù)大佬交流,也覺(jué)得很奇葩,不過(guò)他推薦了一個(gè)軟件可以用來(lái)排查這個(gè)雜癥,通過(guò)這個(gè)軟件一步步跟蹤下去,定位到原來(lái)是一個(gè)組件有缺陷導(dǎo)致。
arthas.
是Alibaba開(kāi)源的Java診斷工具,采用命令行交互模式,提供了豐富的功能,是排查jvm相關(guān)問(wèn)題的利器。安裝簡(jiǎn)單,只要有jdk環(huán)境即可,感興趣的可以去官網(wǎng)閱讀,這邊簡(jiǎn)單分享下trace命令的使用。
啟動(dòng):java -jar arthas-boot.jar 進(jìn)程ID
跟蹤:trace 包名.類(lèi)名 要跟蹤的方法比如com.test.TestDemo doRun方法。
再運(yùn)行到這個(gè)類(lèi)的方法時(shí),會(huì)顯示這個(gè)方法調(diào)用哪個(gè)API耗時(shí),對(duì)應(yīng)的行數(shù)也會(huì)顯示。
