<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          2.4K star,一個(gè)高性能、無侵入的Java性能監(jiān)控和統(tǒng)計(jì)工具,有點(diǎn)東西!

          共 6754字,需瀏覽 14分鐘

           ·

          2022-12-17 13:33


          背景

          隨著所在公司的發(fā)展,應(yīng)用服務(wù)的規(guī)模不斷擴(kuò)大,原有的垂直應(yīng)用架構(gòu)已無法滿足產(chǎn)品的發(fā)展,幾十個(gè)工程師在一個(gè)項(xiàng)目里并行開發(fā)不同的功能,開發(fā)效率不斷降低。

          于是公司開始全面推進(jìn)服務(wù)化進(jìn)程,把團(tuán)隊(duì)內(nèi)的大部分工程師主要精力全部都集中到服務(wù)化中。服務(wù)化可以讓每個(gè)工程師僅在自己負(fù)責(zé)的子項(xiàng)目中進(jìn)行開發(fā),提高了開發(fā)的效率,但是服務(wù)化同時(shí)也帶來了其他問題:

          • 無法知道每個(gè)服務(wù)的運(yùn)行情況,例如,某一臺服務(wù)它目前的 QPS 是多少?它的平均延遲是多少,99% 的延遲是多少,99.9% 的延遲又是多少?
          • 某一個(gè)接口響應(yīng)時(shí)間慢,如何定位是哪個(gè)方法引起的?
          • 每個(gè)服務(wù)的負(fù)載是否均衡?
          • 當(dāng)服務(wù)出現(xiàn)抖動(dòng)時(shí),如何判斷是 DB、Cache 還是下游服務(wù)引起的?
          • DB 和 Cache 響應(yīng)延遲是多少?
          • 如何評估服務(wù)的容量,隨著服務(wù)的調(diào)用量越來越大,這個(gè)服務(wù)需要多少機(jī)器來支撐?什么時(shí)候應(yīng)該加機(jī)器?

          針對以上開發(fā)中的煩惱,今天我們介紹一個(gè)針對高并發(fā)、低延遲應(yīng)用設(shè)計(jì)的高性能 Java 性能監(jiān)控和統(tǒng)計(jì)工具——MyPerf4J。

          使用場景

          • 在開發(fā)環(huán)境中快速定位 Java 應(yīng)用程序的性能瓶頸
          • 在生產(chǎn)環(huán)境中長期監(jiān)控 Java 應(yīng)用程序的性能指標(biāo)

          特性

          • 高性能: 單線程支持每秒 1000萬次 響應(yīng)時(shí)間的記錄,每次記錄只花費(fèi) 73納秒
          • 無侵入: 采用 JavaAgent 方式,對應(yīng)用程序完全無侵入,無需修改應(yīng)用代碼
          • 低內(nèi)存: 采用內(nèi)存復(fù)用的方式,整個(gè)生命周期只產(chǎn)生極少的臨時(shí)對象,不影響應(yīng)用程序的GC
          • 高精度: 采用納秒來計(jì)算響應(yīng)時(shí)間
          • 高實(shí)時(shí): 支持秒級監(jiān)控,最低 1 秒!

          監(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

          Memory

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

          JVM GC

          CollectCount,CollectTime

          JVM Class

          Total,Loaded,Unloaded

          快速啟動(dòng)

          MyPerf4J 采用 JavaAgent 配置方式,透明化接入應(yīng)用,對應(yīng)用代碼完全沒有侵入。推薦:Java面試題

          下載
          • 下載并解壓 MyPerf4J-ASM.zip
          • 閱讀解壓出的 README 文件
          • 修改解壓出的 MyPerf4J.properties 配置文件中 app_name、metrics.log.xxxfilter.packages.include 的配置值
          • MyPerf4J-ASM.zip包:https://github.com/LinShunKang/Objects/blob/master/zips/CN/MyPerf4J-ASM-3.3.0-SNAPSHOT.zip?raw=true
          配置

          在 JVM 啟動(dòng)參數(shù)里加上以下兩個(gè)參數(shù)

          -javaagent:/path/to/MyPerf4J-ASM.jar
          -DMyPerf4JPropFile=/path/to/MyPerf4J.properties
          運(yùn)行

          啟動(dòng)應(yīng)用,監(jiān)控日志輸出到 /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 啟動(dòng)參數(shù)中去掉以下兩個(gè)參數(shù),重啟即可卸載此工具。

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

          開源地址

          • https://github.com/LinShunKang/MyPerf4J

          推薦閱讀:

          世界的真實(shí)格局分析,地球人類社會底層運(yùn)行原理

          不是你需要中臺,而是一名合格的架構(gòu)師(附各大廠中臺建設(shè)PPT)

          企業(yè)IT技術(shù)架構(gòu)規(guī)劃方案

          論數(shù)字化轉(zhuǎn)型——轉(zhuǎn)什么,如何轉(zhuǎn)?

          華為干部與人才發(fā)展手冊(附PPT)

          企業(yè)10大管理流程圖,數(shù)字化轉(zhuǎn)型從業(yè)者必備!

          【中臺實(shí)踐】華為大數(shù)據(jù)中臺架構(gòu)分享.pdf

          華為的數(shù)字化轉(zhuǎn)型方法論

          華為如何實(shí)施數(shù)字化轉(zhuǎn)型(附PPT)

          超詳細(xì)280頁Docker實(shí)戰(zhàn)文檔!開放下載

          華為大數(shù)據(jù)解決方案(PPT)


          瀏覽 57
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  婷婷内射精品视频 | 精品国产91久久久无码 | 中文字幕国产第一页 | 999精品视频在线观看 | 九九九在线视频观看 |