一個針對高併發、低延遲應用設計的高性能且無侵入的實時Java性能監控和統計工具。
受 perf4j 和 TProfiler啓發而來。
MyPerf4J具備如下幾個特性:java
MyPerf4J爲每一個應用收集數十個監控指標,全部的監控指標都是實時採集和展示的。git
下面是MyPerf4J目前支持的監控指標列表:github
RPS,Count,Avg,Min,Max,StdDev,TP50, TP90, TP95, TP99, TP999, TP9999, TP99999, TP100
spring
TotalStarted,Runnable,Blocked,Waiting,TimedWaiting,Terminated,Active,Peak,Daemon,New
併發
HeapInit,HeapUsed,HeapCommitted,HeapMax,NonHeapInit,NonHeapUsed,NonHeapCommitted,NonHeapMax
高併發
CollectCount,CollectTime
工具
Total,Loaded,Unloaded
性能
> 想知道如何實現上述效果?請先按照[快速啓動](https://github.com/ThinkpadNC5/MyPerf4J#%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8)的描述啓動應用,再按照[這裏](https://github.com/ThinkpadNC5/MyPerf4J/wiki/InfluxDB_)的描述進行安裝配置便可。
MyPerf4J採用JavaAgent配置方式,透明化接入應用,對應用代碼徹底沒有侵入。spa
在JVM啓動參數里加上如下兩個參數設計
-javaagent:/your/path/to/MyPerf4J-ASM-${MyPerf4J-version}.jar-DMyPerf4JPropFile=/your/path/to/myPerf4J.properties
其中,MyPerf4JPropFile
的配置以下:
#應用名稱 AppName=MyPerf4JTest #配置MetricsProcessors,可不配置 #MethodMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBMethodMetricsProcessor #ClassMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmClassMetricsProcessor #GCMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmGCMetricsProcessor #MemMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmMemoryMetricsProcessor #ThreadMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmThreadMetricsProcessor #配置備份Recorders的數量,默認爲1,最小爲1,最大爲8,當須要在較小MillTimeSlice內統計大量方法性能數據時可配置大一些 BackupRecordersCount=1 #配置Record模式,可配置爲accurate/rough RecorderMode=accurate #配置時間片,單位爲ms,最小1s,最大600s MillTimeSlice=10000 #須要監控的package,可配置多個,用英文';'分隔 IncludePackages=cn.perf4j.demo #不須要監控的package,可配置多個,用英文';'分隔 ExcludePackages=org.spring; #可配置多個方法名,用英文';'分隔 ExcludeMethods=equals;hash #是否排除私有方法,true/false ExcludePrivateMethod=true #通用的方法執行時間閾值,單位爲ms ProfilingTimeThreshold=1000 #在一個時間片內,超過方法執行時間閾值的次數,僅在RecorderMode=accurate時有效 ProfilingOutThresholdCount=10
想了解更多的配置?請看 這裏
輸出結果,默認輸出到stdout.log:
MyPerf4J Performance Statistics [2018-07-01 23:40:23, 2018-07-01 23:40:24] Api[2/3] RPS Avg(ms) Min(ms) Max(ms) StdDev Count TP50 TP90 TP95 TP99 TP999 TP9999 TP99999 TP100 DemoServiceImpl.getId1 7454181 0.00 0 0 0.00 7454181 0 0 0 0 0 0 0 0 DemoServiceImpl.getId2 7454180 0.00 0 0 0.00 7454180 0 0 0 0 0 0 0 0
在JVM啓動參數中去掉如下兩個參數,重啓便可卸載此工具。
-javaagent:/your/path/to/MyPerf4J-ASM.jar-DMyPerf4JPropFile=/your/path/to/myPerf4J.properties
若是您遇到任何問題或有疑問,請您堅決果斷的 提交Issue : )
想更深刻的瞭解MyPerf4J?請看 https://github.com/ThinkpadNC5/MyPerf4J/wiki/Chinese-Doc。