簡體中文 | English
一個(gè)針對(duì)高并發(fā)如失、低延遲應(yīng)用設(shè)計(jì)的高性能 Java 性能監(jiān)控和統(tǒng)計(jì)工具。
特性
- 高性能: 單線程支持每秒 1600 萬次 響應(yīng)時(shí)間的記錄送粱,每次記錄只花費(fèi) 63 納秒
- 無侵入: 采用 JavaAgent 方式褪贵,對(duì)應(yīng)用程序完全無侵入,無需修改應(yīng)用代碼
- 低內(nèi)存: 采用內(nèi)存復(fù)用的方式抗俄,整個(gè)生命周期只產(chǎn)生極少的臨時(shí)對(duì)象脆丁,不影響應(yīng)用程序的 GC
- 高精度: 采用納秒來計(jì)算響應(yīng)時(shí)間
- 高實(shí)時(shí): 支持秒級(jí)監(jiān)控,最低 1 秒
使用場(chǎng)景
- 在開發(fā)環(huán)境中快速定位 Java 應(yīng)用程序的性能瓶頸
- 在生產(chǎn)環(huán)境中長期監(jiān)控 Java 應(yīng)用程序的性能指標(biāo)
文檔
監(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 Metrics
RPS,Count胰蝠,Avg歼培,Min,Max茸塞,StdDev躲庄,TP50, TP90, TP95, TP99, TP999, TP9999, TP99999, TP100
-
JVM Metrics
Thread,Memory钾虐,ByteBuff噪窘,GC,Class
想知道如何實(shí)現(xiàn)上述效果效扫?請(qǐng)先按照快速啟動(dòng)的描述啟動(dòng)應(yīng)用倔监,再按照這里的描述進(jìn)行安裝配置即可直砂。
快速啟動(dòng)
MyPerf4J 采用 JavaAgent 配置方式,透明化接入應(yīng)用浩习,對(duì)應(yīng)用代碼完全沒有侵入静暂。
打包
- git clone git@github.com:LinShunKang/MyPerf4J.git
- mvn clean package
- 把 MyPerf4J-ASM-${MyPerf4J-version}.jar 重命名為 MyPerf4J-ASM.jar
如果你使用的是 JDK 7 或者更高版本可以嘗試直接下載 MyPerf4J-ASM.jar
配置
在 JVM 啟動(dòng)參數(shù)里加上以下兩個(gè)參數(shù)
-javaagent:/your/path/to/MyPerf4J-ASM.jar
-DMyPerf4JPropFile=/your/path/to/myPerf4J.properties
其中,MyPerf4JPropFile
的配置如下:
#應(yīng)用名稱
AppName=MyPerf4JTest
#MetricsProcessor類型谱秽,0:以標(biāo)準(zhǔn)格式化結(jié)構(gòu)輸出到stdout.log 1:以標(biāo)準(zhǔn)格式化結(jié)構(gòu)輸出到磁盤 2:以InfluxDB LineProtocol格式輸出到磁盤
MetricsProcessorType=1
#配置各個(gè)Metrics日志的文件路徑籍嘹,可不配置
MethodMetricsFile=/data/logs/MyPerf4J/method_metrics.log
ClassMetricsFile=/data/logs/MyPerf4J/class_metrics.log
GCMetricsFile=/data/logs/MyPerf4J/gc_metrics.log
MemMetricsFile=/data/logs/MyPerf4J/memory_metrics.log
BufPoolMetricsFile=/data/logs/MyPerf4J/buf_pool_metrics
ThreadMetricsFile=/data/logs/MyPerf4J/thread_metrics.log
#配置Record模式,可配置為accurate/rough
RecorderMode=accurate
#配置時(shí)間片弯院,單位為ms辱士,最小1s,最大600s
MilliTimeSlice=10000
#需要監(jiān)控的package听绳,可配置多個(gè)颂碘,用英文';'分隔
IncludePackages=cn.perf4j.demo
想了解更多的配置?請(qǐng)看這里
運(yùn)行
-
輸出結(jié)果椅挣,輸出到 /data/logs/MyPerf4J/method_metrics.log:
MyPerf4J Method Metrics [2018-09-06 19:21:40, 2018-09-06 19:21:45] Method[4] RPS Avg(ms) Min(ms) Max(ms) StdDev Count TP50 TP90 TP95 TP99 TP999 TP9999 TP99999 TP100 DemoServiceImpl.getId1(long) 1974 0.00 0 0 0.00 9870 0 0 0 0 0 0 0 0 DemoServiceImpl.getId2(long) 2995 0.50 0 2 0.01 14975 0 1 2 2 2 2 2 2 DemoServiceImplV2.getId1(long) 787 0.00 0 0 0.00 3938 0 0 0 0 0 0 0 0 DemoServiceImplV2.getId3(long) 1575 0.50 0 1 0.01 7876 1 1 1 1 1 1 1 1
卸載
在 JVM 啟動(dòng)參數(shù)中去掉以下兩個(gè)參數(shù)头岔,重啟即可卸載此工具。
-javaagent:/your/path/to/MyPerf4J-ASM.jar
-DMyPerf4JPropFile=/your/path/to/myPerf4J.properties
問題
如果您有任何問題鼠证、疑問或者建議峡竣,請(qǐng)您毫不猶豫的 提交Issue 或者 發(fā)送郵件 : )
參考項(xiàng)目
MyPerf4J 是受以下項(xiàng)目啟發(fā)而來:
更多信息
想更深入的了解 MyPerf4J ?請(qǐng)看https://github.com/LinShunKang/MyPerf4J/wiki/Chinese-Doc量九。
PS: 如果覺得MyPerf4J對(duì)您有幫助适掰,請(qǐng)star這個(gè)項(xiàng)目,讓更多人了解和使用MyPerf4J :)