2-4K star,一個高性能、無侵入的性能監控工具 MyPerf

背景

隨着所在公司的發展,應用服務的規模不斷擴大,原有的垂直應用架構已無法滿足產品的發展,幾十個工程師在一個項目裏並行開發不同的功能,開發效率不斷降低。

於是公司開始全面推進服務化進程,把團隊內的大部分工程師主要精力全部都集中到服務化中。服務化可以讓每個工程師僅在自己負責的子項目中進行開發,提高了開發的效率,但是服務化同時也帶來了其他問題:

針對以上開發中的煩惱,今天我們介紹一個針對高併發、低延遲應用設計的高性能 Java 性能監控和統計工具——MyPerf4J。

使用場景

特性

監控指標

MyPerf4J 爲每個應用收集數十個監控指標,所有的監控指標都是實時採集和展現的。

下面是 MyPerf4J 目前支持的監控指標列表:

Method

RPS,Count,Avg,Min,Max,StdDev,TP50, TP90, TP95, TP99, TP999, TP9999, TP99999, TP100

Memory

HeapInit,HeapUsed,HeapCommitted,HeapMax,NonHeapInit,NonHeapUsed,NonHeapCommitted,NonHeapMax

JVM GC

CollectCount,CollectTime

JVM Class

Total,Loaded,Unloaded

快速啓動

MyPerf4J 採用 JavaAgent 配置方式,透明化接入應用,對應用代碼完全沒有侵入。

下載

MyPerf4J-ASM.zip 包:https://github.com/LinShunKang/Objects/blob/master/zips/CN/MyPerf4J-ASM-3.3.0-SNAPSHOT.zip?raw=true

配置

在 JVM 啓動參數里加上以下兩個參數

-javaagent:/path/to/MyPerf4J-ASM.jar  
-DMyPerf4JPropFile=/path/to/MyPerf4J.properties

運行

啓動應用,監控日誌輸出到 /path/to/log/method_metrics.log:

MyPerf4J Method Metrics [2020-01-01 12:49:57, 2020-01-01 12:49:58]  
Method[6]                            Type        Level  TimePercent      RPS  Avg(ms)  Min(ms)  Max(ms)    StdDev    Count     TP50     TP90     TP95     TP99    TP999   TP9999  
DemoServiceImpl.getId2(long)      General      Service      322.50%     6524     0.49        0        1     0.50      6524        0        1        1        1        1        1  
DemoServiceImpl.getId3(long)      General      Service      296.10%     4350     0.68        0        1     0.47      4350        1        1        1        1        1        1  
DemoServiceImpl.getId4(long)      General      Service      164.60%     2176     0.76        0        1     0.43      2176        1        1        1        1        1        1  
DemoServiceImpl.getId1(long)      General      Service        0.00%     8704     0.00        0        0     0.00      8704        0        0        0        0        0        0  
DemoDAO.getId1(long)         DynamicProxy          DAO        0.00%     2176     0.00        0        0     0.00      2176        0        0        0        0        0        0  
DemoDAO.getId2()             DynamicProxy          DAO        0.00%     2176     0.00        0        0     0.00      2176        0        0        0        0        0        0
卸載

在 JVM 啓動參數中去掉以下兩個參數,重啓即可卸載此工具。

-javaagent:/path/to/MyPerf4J-ASM.jar  
-DMyPerf4JPropFile=/path/to/MyPerf4J.properties

開源地址

https://github.com/LinShunKang/MyPerf4J

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/XiCl5b95xi50Z9WjPt_RcA