curl循环监控_阿里巴巴开源性能监控神器Arthas
線上經(jīng)常遇到MQ消費速度忽高忽低,但是線下測試卻沒有問題。那會是哪一個問題引起的呢?因為影響MQ消費速度的因素太多了,如下因素只要任何一種出現(xiàn)問題,就會影響MQ消費速度。
JVM內(nèi)存過高,一直在Full GC。
Redis連接堵塞,導(dǎo)致Redis操作一直延遲。
第三方接口響應(yīng)時間過長。
服務(wù)器cpu/帶寬/IO受限。
Mysql出現(xiàn)慢sql,查詢過慢。
程序本身問題(例如異常循環(huán))。
解決方案:
為了排除具體原因,但是線上又不能進(jìn)行錯誤調(diào)試,所以博主只能用最笨的辦法,每一行關(guān)鍵代碼,都寫上log日志,然后通過輸出每一行代碼的執(zhí)行時間,來確定到底是哪里出錯。
方案問題:
但是打印日志的方式需要修改代碼,有一定的風(fēng)險,修改完又需要重新發(fā)布才能生效。最重要的是,MQ消費需要跑大量的數(shù)據(jù),大部分?jǐn)?shù)據(jù)都是正常的,少部分?jǐn)?shù)據(jù)是異常的,針對于這種情況,打印日志的方式就很難發(fā)現(xiàn)問題點。
尋求更優(yōu)解:
那到底有沒有這么一個工具可以不用修改任何代碼,就可以排查線上問題呢?今天就給大家推送一款神器Arthas,這是阿里巴巴開源的一款性能監(jiān)控工具。
當(dāng)你遇到以下類似問題而束手無策時,Arthas 可以幫助你解決:
這個類從哪個 jar 包加載的?為什么會報各種類相關(guān)的 Exception?
我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit?分支搞錯了?
遇到問題無法在線上 debug,難道只能通過加日志再重新發(fā)布嗎?
線上遇到某個用戶的數(shù)據(jù)處理有問題,但線上同樣無法 debug,線下無法重現(xiàn)!
是否有一個全局視角來查看系統(tǒng)的運行狀況?
有什么辦法可以監(jiān)控到JVM的實時運行狀態(tài)?
Arthas入門:
Arthas本質(zhì)其實就是一個jar包,所以只需要去官網(wǎng)下載對應(yīng)的jar就可以了,然后通過java -jar的方式啟動,例如:
curl -O https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arthas-boot.jar
啟動成功之后可以看到Arthas啟動標(biāo)志,如下所示:
[INFO] Try to attach process 71560[INFO] Attach process 71560 success.
[INFO] arthas-client connect 127.0.0.1 3658
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'| .-. || '--'.' | | | .--. || .-. |`. `-.| | | || |\ \ | | | | | || | | |.-' |
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
wiki: https://alibaba.github.io/arthas
version: 3.0.5.20181127201536
pid: 71560
time: 2018-11-28 19:16:24
$
Arthas也提供了Docker模式下的監(jiān)控,我們只需要在DockerFile中增加如下代碼,就可以嵌入Arthas了。
# copy arthasCOPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
MQ消費過慢終極解決方案:
針對于上面提出的問題,MQ消費速度過慢,我們可以采用trace命令來解決,例如我們可以輸入:
trace -j com.fourkmiles.advertisement.service.impl.CampaignsV2ApiMethodServicelmpl getSearchTermReport '#cost > 1000'這個命令的意思是,CampaignsV2ApiMethodServicelmpl類的getSearchTermReport方法中,打印出執(zhí)行時間超過1000的方法。
如下圖所示,它可以打印這個方法中每一行代碼所花費的時間。
它還可以監(jiān)測:線程、jvm、方法、方法執(zhí)行路徑、服務(wù)運行情況、反編譯代碼、獲取方法返回值等功能,Arthas都給我們提供了方便的命令來查詢這些指標(biāo)。
總結(jié):
總體來說Arthas功能還是非常強大的,對應(yīng)線上bug排查可謂雪中送炭。但是Arthas本質(zhì)還是一個jar服務(wù),所以對服務(wù)器是有一定性能損耗的,在不監(jiān)控的時候一定要關(guān)閉Arthas對應(yīng)的服務(wù)。
官網(wǎng)地址:https://alibaba.github.io/arthas/install-detail.html
林老師帶你學(xué)編程
微信號 : lzqcode
個人網(wǎng)站:wolzq.com
▇?掃碼關(guān)注我們
總結(jié)
以上是生活随笔為你收集整理的curl循环监控_阿里巴巴开源性能监控神器Arthas的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asrock是什么牌子的(ASRock)
- 下一篇: 夏日信号枪在哪里 美的夏日文案