MyPerf4J 一個(gè)高性能、無侵入的Java性能監(jiān)控和統(tǒng)計(jì)工具

簡體中文 | 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

    Markdown

  • JVM Metrics

    Thread,Memory钾虐,ByteBuff噪窘,GC,Class

    Markdown

    想知道如何實(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 :)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荠列,一起剝皮案震驚了整個(gè)濱河市类浪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肌似,老刑警劉巖费就,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異川队,居然都是意外死亡力细,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門固额,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眠蚂,“玉大人,你說我怎么就攤上這事对雪『雍” “怎么了米绕?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵瑟捣,是天一觀的道長馋艺。 經(jīng)常有香客問我,道長迈套,這世上最難降的妖魔是什么捐祠? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮桑李,結(jié)果婚禮上踱蛀,老公的妹妹穿的比我還像新娘。我一直安慰自己贵白,他們只是感情好率拒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著禁荒,像睡著了一般猬膨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呛伴,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天勃痴,我揣著相機(jī)與錄音,去河邊找鬼热康。 笑死沛申,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的姐军。 我是一名探鬼主播铁材,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼奕锌!你這毒婦竟也來了衫贬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤歇攻,失蹤者是張志新(化名)和其女友劉穎固惯,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缴守,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡葬毫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屡穗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贴捡。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖村砂,靈堂內(nèi)的尸體忽然破棺而出烂斋,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布汛骂,位于F島的核電站罕模,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏帘瞭。R本人自食惡果不足惜淑掌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝶念。 院中可真熱鬧抛腕,春花似錦、人聲如沸媒殉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽廷蓉。三九已至柄错,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間苦酱,已是汗流浹背售貌。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疫萤,地道東北人颂跨。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像扯饶,于是被迫代替她去往敵國和親恒削。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容