摘要:一個(gè)針對(duì)高并發(fā)低延遲應(yīng)用設(shè)計(jì)的高性能且無(wú)侵入的實(shí)時(shí)性能監(jiān)控和統(tǒng)計(jì)工具。快速啟動(dòng)采用配置方式,透明化接入應(yīng)用,對(duì)應(yīng)用代碼完全沒(méi)有侵入。如果覺(jué)得對(duì)您有幫助,請(qǐng)這個(gè)項(xiàng)目,讓更多人了解和使用。
一個(gè)針對(duì)高并發(fā)、低延遲應(yīng)用設(shè)計(jì)的高性能且無(wú)侵入的實(shí)時(shí)Java性能監(jiān)控和統(tǒng)計(jì)工具。
受 perf4j 和 TProfiler啟發(fā)而來(lái)。
MyPerf4J具有以下幾個(gè)特性:
無(wú)侵入: 采用JavaAgent方式,對(duì)應(yīng)用程序完全無(wú)侵入,無(wú)需修改應(yīng)用代碼
高性能: 性能消耗非常小,每次記錄只花費(fèi)73ns,可以在生產(chǎn)環(huán)境長(zhǎ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)控,最低1s!
文檔English README Document
中文文檔
監(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
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
> 想知道如何實(shí)現(xiàn)上述效果?請(qǐng)先按照[快速啟動(dòng)](https://github.com/ThinkpadNC5/MyPerf4J#%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8)的描述啟動(dòng)應(yīng)用,再按照[這里](https://github.com/ThinkpadNC5/MyPerf4J/wiki/InfluxDB_)的描述進(jìn)行安裝配置即可。快速啟動(dòng)
MyPerf4J采用JavaAgent配置方式,透明化接入應(yīng)用,對(duì)應(yīng)用代碼完全沒(méi)有侵入。
打包git clone git@github.com:ThinkpadNC5/MyPerf4J.git
mvn clean package
把 MyPerf4J-ASM-${MyPerf4J-version}.jar 重命名為 MyPerf4J-ASM.jar
配置在JVM啟動(dòng)參數(shù)里加上以下兩個(gè)參數(shù)
-javaagent:/your/path/to/MyPerf4J-ASM-${MyPerf4J-version}.jar-DMyPerf4JPropFile=/your/path/to/myPerf4J.properties
其中,MyPerf4JPropFile的配置如下:
#應(yīng)用名稱 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的數(shù)量,默認(rèn)為1,最小為1,最大為8,當(dāng)需要在較小MillTimeSlice內(nèi)統(tǒng)計(jì)大量方法性能數(shù)據(jù)時(shí)可配置大一些 BackupRecordersCount=1 #配置Record模式,可配置為accurate/rough RecorderMode=accurate #配置時(shí)間片,單位為ms,最小1s,最大600s MillTimeSlice=10000 #需要監(jiān)控的package,可配置多個(gè),用英文";"分隔 IncludePackages=cn.perf4j.demo #不需要監(jiān)控的package,可配置多個(gè),用英文";"分隔 ExcludePackages=org.spring; #可配置多個(gè)方法名,用英文";"分隔 ExcludeMethods=equals;hash #是否排除私有方法,true/false ExcludePrivateMethod=true #通用的方法執(zhí)行時(shí)間閾值,單位為ms ProfilingTimeThreshold=1000 #在一個(gè)時(shí)間片內(nèi),超過(guò)方法執(zhí)行時(shí)間閾值的次數(shù),僅在RecorderMode=accurate時(shí)有效 ProfilingOutThresholdCount=10
想了解更多的配置?請(qǐng)看這里運(yùn)行
輸出結(jié)果,默認(rèn)輸出到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啟動(dòng)參數(shù)中去掉以下兩個(gè)參數(shù),重啟即可卸載此工具。
-javaagent:/your/path/to/MyPerf4J-ASM.jar問(wèn)題-DMyPerf4JPropFile=/your/path/to/myPerf4J.properties
如果您遇到任何問(wèn)題或有疑問(wèn),請(qǐng)您毫不猶豫的提交Issue : )更多信息
想更深入的了解MyPerf4J?請(qǐng)看https://github.com/ThinkpadNC5/MyPerf4J/wiki/Chinese-Doc。
PS: 如果覺(jué)得MyPerf4J對(duì)您有幫助,請(qǐng)star這個(gè)項(xiàng)目,讓更多人了解和使用MyPerf4J :) 。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/76519.html
摘要:典型實(shí)現(xiàn)不同的監(jiān)控模塊,側(cè)重于不同領(lǐng)域,有著不同的職責(zé)。指標(biāo)收集方面,支持多樣化的組件將被優(yōu)先下使用。以上談了這么多,僅僅是聊了一下收集方面而已。 更多文章,請(qǐng)移步微信公眾號(hào)《小姐姐味道》 mp原文 https://mp.weixin.qq.com/s?__...監(jiān)控是分布式系統(tǒng)的必備組件,能夠起到提前預(yù)警、問(wèn)題排查、評(píng)估決策等功效,乃行走江湖、居家必備之良品。 監(jiān)控系統(tǒng)概要 功能劃分...
摘要:典型實(shí)現(xiàn)不同的監(jiān)控模塊,側(cè)重于不同領(lǐng)域,有著不同的職責(zé)。指標(biāo)收集方面,支持多樣化的組件將被優(yōu)先下使用。以上談了這么多,僅僅是聊了一下收集方面而已。 更多文章,請(qǐng)移步微信公眾號(hào)《小姐姐味道》 mp原文 https://mp.weixin.qq.com/s?__...監(jiān)控是分布式系統(tǒng)的必備組件,能夠起到提前預(yù)警、問(wèn)題排查、評(píng)估決策等功效,乃行走江湖、居家必備之良品。 監(jiān)控系統(tǒng)概要 功能劃分...
摘要:左邊側(cè)邊欄分為三個(gè)組,分別為監(jiān)控?cái)?shù)據(jù),事件和報(bào)告。從接到請(qǐng)求到響應(yīng)處理完成的過(guò)程為稱為一次事務(wù)。針對(duì)應(yīng)用,還提供性能監(jiān)控?cái)?shù)據(jù),包括內(nèi)存使用,線程數(shù)等等。 New Relic性能監(jiān)控(二)應(yīng)用監(jiān)控APM 2018-04-12 瑯琊書(shū)生本系列文章基于公司使用New Relic的經(jīng)驗(yàn),鑒于國(guó)內(nèi)較少有這方面的文章,因此把我工作中了解到的知識(shí)分享給大家,希望可以給需要的朋友帶來(lái)幫助。 上期文章...
摘要:注入機(jī)制作為工作的基礎(chǔ),也為無(wú)侵入捕獲應(yīng)用數(shù)據(jù)提供可能。代碼注入機(jī)制結(jié)合和技術(shù),在應(yīng)用字節(jié)碼加載到之前進(jìn)行字節(jié)碼改寫(xiě)。當(dāng)然,修改字節(jié)碼文件流的動(dòng)作是在中進(jìn)行的。 UAVStack的中間件增強(qiáng)框架專題(MOF)】為大家詳細(xì)講述UAV中的MOF Agent是如何借助javaagent(premain)和javaassist技術(shù)在對(duì)應(yīng)用無(wú)侵入的前提下完成數(shù)據(jù)捕獲的。歡迎繼續(xù)關(guān)注UAVStac...
摘要:服務(wù)自動(dòng)注冊(cè)與發(fā)現(xiàn),不再需要寫(xiě)死服務(wù)提供方地址,注冊(cè)中心基于接口名查詢服務(wù)提供者的地址,并且能夠平滑添加或刪除服務(wù)提供者。調(diào)用關(guān)系說(shuō)明服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。 上一篇我們介紹《構(gòu)建dubbo分布式平臺(tái)-maven構(gòu)建ant-utils工具包的構(gòu)建》,從今天開(kāi)始,我們進(jìn)入分布式服務(wù)項(xiàng)目的核心教程,真正使用dubbo實(shí)現(xiàn)分布...
閱讀 3074·2021-11-19 09:40
閱讀 1559·2021-11-15 11:39
閱讀 662·2021-10-08 10:05
閱讀 2273·2021-09-03 10:29
閱讀 3406·2021-08-12 13:22
閱讀 2151·2019-08-30 15:54
閱讀 3706·2019-08-30 14:03
閱讀 2654·2019-08-30 13:45