摘要:一個針對高并發低延遲應用設計的高性能且無侵入的實時性能監控和統計工具。快速啟動采用配置方式,透明化接入應用,對應用代碼完全沒有侵入。如果覺得對您有幫助,請這個項目,讓更多人了解和使用。
一個針對高并發、低延遲應用設計的高性能且無侵入的實時Java性能監控和統計工具。
受 perf4j 和 TProfiler啟發而來。
MyPerf4J具有以下幾個特性:
無侵入: 采用JavaAgent方式,對應用程序完全無侵入,無需修改應用代碼
高性能: 性能消耗非常小,每次記錄只花費73ns,可以在生產環境長期使用
低內存: 采用內存復用的方式,整個生命周期只產生極少的臨時對象,不影響應用程序的GC
高精度: 采用納秒來計算響應時間
高實時: 支持秒級監控,最低1s!
文檔English README Document
中文文檔
監控指標MyPerf4J為每個應用收集數十個監控指標,所有的監控指標都是實時采集和展現的。
下面是MyPerf4J目前支持的監控指標列表:
Method
RPS,Count,Avg,Min,Max,StdDev,TP50, TP90, TP95, TP99, TP999, TP9999, TP99999, TP100
JVM Thread
TotalStarted,Runnable,Blocked,Waiting,TimedWaiting,Terminated,Active,Peak,Daemon,New
JVM Memory
HeapInit,HeapUsed,HeapCommitted,HeapMax,NonHeapInit,NonHeapUsed,NonHeapCommitted,NonHeapMax
JVM GC
CollectCount,CollectTime
JVM Class
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配置方式,透明化接入應用,對應用代碼完全沒有侵入。
打包git clone git@github.com:ThinkpadNC5/MyPerf4J.git
mvn clean package
把 MyPerf4J-ASM-${MyPerf4J-version}.jar 重命名為 MyPerf4J-ASM.jar
配置在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。
PS: 如果覺得MyPerf4J對您有幫助,請star這個項目,讓更多人了解和使用MyPerf4J :) 。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/76519.html
摘要:典型實現不同的監控模塊,側重于不同領域,有著不同的職責。指標收集方面,支持多樣化的組件將被優先下使用。以上談了這么多,僅僅是聊了一下收集方面而已。 更多文章,請移步微信公眾號《小姐姐味道》 mp原文 https://mp.weixin.qq.com/s?__...監控是分布式系統的必備組件,能夠起到提前預警、問題排查、評估決策等功效,乃行走江湖、居家必備之良品。 監控系統概要 功能劃分...
摘要:典型實現不同的監控模塊,側重于不同領域,有著不同的職責。指標收集方面,支持多樣化的組件將被優先下使用。以上談了這么多,僅僅是聊了一下收集方面而已。 更多文章,請移步微信公眾號《小姐姐味道》 mp原文 https://mp.weixin.qq.com/s?__...監控是分布式系統的必備組件,能夠起到提前預警、問題排查、評估決策等功效,乃行走江湖、居家必備之良品。 監控系統概要 功能劃分...
摘要:左邊側邊欄分為三個組,分別為監控數據,事件和報告。從接到請求到響應處理完成的過程為稱為一次事務。針對應用,還提供性能監控數據,包括內存使用,線程數等等。 New Relic性能監控(二)應用監控APM 2018-04-12 瑯琊書生本系列文章基于公司使用New Relic的經驗,鑒于國內較少有這方面的文章,因此把我工作中了解到的知識分享給大家,希望可以給需要的朋友帶來幫助。 上期文章...
摘要:注入機制作為工作的基礎,也為無侵入捕獲應用數據提供可能。代碼注入機制結合和技術,在應用字節碼加載到之前進行字節碼改寫。當然,修改字節碼文件流的動作是在中進行的。 UAVStack的中間件增強框架專題(MOF)】為大家詳細講述UAV中的MOF Agent是如何借助javaagent(premain)和javaassist技術在對應用無侵入的前提下完成數據捕獲的。歡迎繼續關注UAVStac...
摘要:服務自動注冊與發現,不再需要寫死服務提供方地址,注冊中心基于接口名查詢服務提供者的地址,并且能夠平滑添加或刪除服務提供者。調用關系說明服務容器負責啟動,加載,運行服務提供者。服務提供者在啟動時,向注冊中心注冊自己提供的服務。 上一篇我們介紹《構建dubbo分布式平臺-maven構建ant-utils工具包的構建》,從今天開始,我們進入分布式服務項目的核心教程,真正使用dubbo實現分布...
閱讀 3104·2021-11-19 09:40
閱讀 1569·2021-11-15 11:39
閱讀 685·2021-10-08 10:05
閱讀 2280·2021-09-03 10:29
閱讀 3413·2021-08-12 13:22
閱讀 2172·2019-08-30 15:54
閱讀 3717·2019-08-30 14:03
閱讀 2659·2019-08-30 13:45