背景
使用場(chǎng)景
特性
監(jiān)控指標(biāo)
快速啟動(dòng)
開(kāi)源地址
背景
隨著所在公司的發(fā)展,應(yīng)用服務(wù)的規(guī)模不斷擴(kuò)大,原有的垂直應(yīng)用架構(gòu)已無(wú)法滿足產(chǎn)品的發(fā)展,幾十個(gè)工程師在一個(gè)項(xiàng)目里并行開(kāi)發(fā)不同的功能,開(kāi)發(fā)效率不斷降低。
于是公司開(kāi)始全面推進(jìn)服務(wù)化進(jìn)程,把團(tuán)隊(duì)內(nèi)的大部分工程師主要精力全部都集中到服務(wù)化中。服務(wù)化可以讓每個(gè)工程師僅在自己負(fù)責(zé)的子項(xiàng)目中進(jìn)行開(kāi)發(fā),提高了開(kāi)發(fā)的效率,但是服務(wù)化同時(shí)也帶來(lái)了其他問(wèn)題:
無(wú)法知道每個(gè)服務(wù)的運(yùn)行情況,例如,某一臺(tái)服務(wù)它目前的 QPS 是多少?它的平均延遲是多少,99% 的延遲是多少,99.9% 的延遲又是多少?
某一個(gè)接口響應(yīng)時(shí)間慢,如何定位是哪個(gè)方法引起的?
每個(gè)服務(wù)的負(fù)載是否均衡?
當(dāng)服務(wù)出現(xiàn)抖動(dòng)時(shí),如何判斷是 DB、Cache 還是下游服務(wù)引起的?
DB 和 Cache 響應(yīng)延遲是多少?
如何評(píng)估服務(wù)的容量,隨著服務(wù)的調(diào)用量越來(lái)越大,這個(gè)服務(wù)需要多少機(jī)器來(lái)支撐?什么時(shí)候應(yīng)該加機(jī)器?
針對(duì)以上開(kāi)發(fā)中的煩惱,今天我們介紹一個(gè)針對(duì)高并發(fā)、低延遲應(yīng)用設(shè)計(jì)的高性能 Java 性能監(jiān)控和統(tǒng)計(jì)工具——MyPerf4J 。
基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro
視頻教程:https://doc.iocoder.cn/video/
使用場(chǎng)景
在開(kāi)發(fā)環(huán)境中快速定位 Java 應(yīng)用程序的性能瓶頸
在生產(chǎn)環(huán)境中長(zhǎng)期監(jiān)控 Java 應(yīng)用程序的性能指標(biāo)
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud
視頻教程:https://doc.iocoder.cn/video/
特性
高性能: 單線程支持每秒 1000萬(wàn)次 響應(yīng)時(shí)間的記錄,每次記錄只花費(fèi) 73納秒
無(wú)侵入: 采用 JavaAgent 方式,對(duì)應(yīng)用程序完全無(wú)侵入,無(wú)需修改應(yīng)用代碼
低內(nèi)存: 采用內(nèi)存復(fù)用的方式,整個(gè)生命周期只產(chǎn)生極少的臨時(shí)對(duì)象,不影響應(yīng)用程序的GC
高精度: 采用納秒來(lái)計(jì)算響應(yīng)時(shí)間
高實(shí)時(shí): 支持秒級(jí)監(jiān)控,最低 1 秒!
監(jiān)控指標(biāo)
MyPerf4J 為每個(gè)應(yīng)用收集數(shù)十個(gè)監(jiān)控指標(biāo),所有的監(jiān)控指標(biāo)都是實(shí)時(shí)采集和展現(xiàn)的。
下面是 MyPerf4J 目前支持的監(jiān)控指標(biāo)列表:
Method
RPS,Count,Avg,Min,Max,StdDev,TP50, TP90, TP95, TP99, TP999, TP9999, TP99999, TP100
Memory
HeapInit,HeapUsed,HeapCommitted,HeapMax,NonHeapInit,NonHeapUsed,NonHeapCommitted,NonHeapMax
JVM GC
CollectCount,CollectTime
JVM Class
Total,Loaded,Unloaded
快速啟動(dòng)
MyPerf4J 采用 JavaAgent 配置方式,透明化接入應(yīng)用,對(duì)應(yīng)用代碼完全沒(méi)有侵入。
下載
下載并解壓 MyPerf4J-ASM.zip
閱讀解壓出的 README 文件
修改解壓出的 MyPerf4J.properties 配置文件中 app_name、metrics.log.xxx 和 filter.packages.include 的配置值
MyPerf4J-ASM.zip包 :https://github.com/LinShunKang/Objects/blob/master/zips/CN/MyPerf4J-ASM-3.3.0-SNAPSHOT.zip?raw=true
配置
在 JVM 啟動(dòng)參數(shù)里加上以下兩個(gè)參數(shù)
-javaagent:/path/to/MyPerf4J-ASM.jar -DMyPerf4JPropFile=/path/to/MyPerf4J.properties

運(yùn)行
啟動(dòng)應(yīng)用,監(jiān)控日志輸出到 /path/to/log/method_metrics.log:
MyPerf4JMethodMetrics[2020-01-0112:49:57,2020-01-0112:49:58] Method[6]TypeLevelTimePercentRPSAvg(ms)Min(ms)Max(ms)StdDevCountTP50TP90TP95TP99TP999TP9999 DemoServiceImpl.getId2(long)GeneralService322.50%65240.49010.506524011111 DemoServiceImpl.getId3(long)GeneralService296.10%43500.68010.474350111111 DemoServiceImpl.getId4(long)GeneralService164.60%21760.76010.432176111111 DemoServiceImpl.getId1(long)GeneralService0.00%87040.00000.008704000000 DemoDAO.getId1(long)DynamicProxyDAO0.00%21760.00000.002176000000 DemoDAO.getId2()DynamicProxyDAO0.00%21760.00000.002176000000
卸載
在 JVM 啟動(dòng)參數(shù)中去掉以下兩個(gè)參數(shù),重啟即可卸載此工具。
-javaagent:/path/to/MyPerf4J-ASM.jar -DMyPerf4JPropFile=/path/to/MyPerf4J.properties
責(zé)任編輯:彭菁
-
JAVA
+關(guān)注
關(guān)注
20文章
2989瀏覽量
109607 -
開(kāi)發(fā)
+關(guān)注
關(guān)注
0文章
373瀏覽量
41512 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3336瀏覽量
59024
原文標(biāo)題:高性能、無(wú)侵入的 Java 性能監(jiān)控神器
文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Java開(kāi)發(fā)環(huán)境概述
英創(chuàng)主板JAVA應(yīng)用開(kāi)發(fā)簡(jiǎn)介
使用Eclipse WTP開(kāi)發(fā)Java Web應(yīng)用程序
如何在嵌入式容器Jetty或Tomcat中運(yùn)行帶有Maven的Java Web應(yīng)用程序
Java程序設(shè)計(jì)基礎(chǔ)
快速識(shí)別應(yīng)用程序性能瓶頸
理解Java中字符流與字節(jié)流的區(qū)別

Java開(kāi)發(fā)環(huán)境配置(win7_64bit)

如何用Java代碼來(lái)創(chuàng)建iOS和Android應(yīng)用程序
Java多線程應(yīng)用程序的數(shù)據(jù)存儲(chǔ)庫(kù)使用改進(jìn)

最新的Java環(huán)境包JavaSetup8u281應(yīng)用程序免費(fèi)下載

LabVIEW應(yīng)用程序中性能瓶頸的解決

開(kāi)發(fā)java應(yīng)用程序的基本步驟是
java環(huán)境配置成功后能執(zhí)行哪些操作
華納云:java web和java有什么區(qū)別java web和java有什么區(qū)別

評(píng)論