MyPerf4J 採用 JavaAgent 配置方式,透明化接入應用,對應用代碼徹底沒有侵入。java
項目地址:
https://github.com/LinShunKang/MyPerf4J
git項目到本地:git
git clone git@github.com:LinShunKang/MyPerf4J.git
打包項目:github
mvn clean package
在 JVM 啓動參數里加上如下兩個參數jvm
-javaagent:D:/workspqce/MyPerf4J/MyPerf4J-ASM-2.5.0.jar -DMyPerf4JPropFile=D:/workspqce/MyPerf4J/myPerf4J.properties
其中,myPerf4J.properties
的配置以下:日誌
# 應用名稱 AppName=MyPerf4JTest # MetricsProcessor類型,0:以標準格式化結構輸出到stdout.log 1:以標準格式化結構輸出到磁盤 2:以InfluxDB LineProtocol格式輸出到磁盤 MetricsProcessorType=1 # 配置各個Metrics日誌的文件路徑,可不配置 MethodMetricsFile=d:/data/logs/MyPerf4J/method_metrics.log ClassMetricsFile=d:/data/logs/MyPerf4J/class_metrics.log GCMetricsFile=d:/data/logs/MyPerf4J/gc_metrics.log MemMetricsFile=d:/data/logs/MyPerf4J/memory_metrics.log BufPoolMetricsFile=d:/data/logs/MyPerf4J/buf_pool_metrics ThreadMetricsFile=d:/data/logs/MyPerf4J/thread_metrics.log # 配置Record模式,可配置爲accurate/rough RecorderMode=accurate # 配置時間片,單位爲ms,最小1s,最大600s MilliTimeSlice=10000 # 須要監控的package,可配置多個,用英文';'分隔 #IncludePackages=com.chinasofti.huateng.lz.qrcode.server.controller; IncludePackages=com.mmzsit.controller; # 不須要監控的package,可配置多個,用英文';'分隔 # ExcludePackages=com.chinasofti.huateng.lz.qrcode.server.config; # 默認監控IncludePackages下的全部方法 # 不監控的方法:可配置多個方法名,用英文';'分隔 ExcludeMethods=upload # 是否展現方法參數類型 ShowMethodParams=true # 是否排除私有方法,true/false ExcludePrivateMethod=true # 通用的方法執行時間閾值,單位爲ms ProfilingTimeThreshold=1000 # 在一個時間片內,超過方法執行時間閾值的次數,僅在RecorderMode=accurate時有效 ProfilingOutThresholdCount=10
2019-03-27 18:25:25.234 [MyPerf4J] WARN profilingParamFile is empty! 2019-03-27 18:25:25.330 [MyPerf4J] INFO __ ___ ____ ______ __ __ / |/ /_ __/ __ \___ _____/ __/ // / / / / /|_/ / / / / /_/ / _ \/ ___/ /_/ // /___ / / / / / / /_/ / ____/ __/ / / __/__ __/ /_/ / /_/ /_/\__, /_/ \___/_/ /_/ /_/ \____/ /____/ 2019-03-27 18:25:25.331 [MyPerf4J] INFO AbstractBootstrap doInitial() SUCCESS!!!
啓動時出現的提示信息:WARN profilingParamFile is empty!能夠不用理會,由於不影響使用。code
輸出結果,輸出到d:/data/logs/MyPerf4J/method_metrics.log
server
MyPerf4J Method Metrics [2019-03-27 18:24:20, 2019-03-27 18:24:30] Method[1] Type RPS Avg(ms) Min(ms) Max(ms) StdDev Count TP50 TP90 TP95 TP99 TP999 TP9999 TP99999 TP100 FtpController.download() General 0 540.00 540 540 0.00 1 540 540 540 540 540 540 540 540 MyPerf4J Method Metrics [2019-03-27 18:24:30, 2019-03-27 18:24:40] Method[1] Type RPS Avg(ms) Min(ms) Max(ms) StdDev Count TP50 TP90 TP95 TP99 TP999 TP9999 TP99999 TP100 FtpController.upload() General 0 467.00 467 467 0.00 1 467 467 467 467 467 467 467 467