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

          高性能、無(wú)侵入的 Java 性能監(jiān)控神器

          共 9707字,需瀏覽 20分鐘

           ·

          2023-09-01 01:56

          點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)??

          犬小哈教程網(wǎng)www.quanxiaoha.com

          文章來(lái)源【公眾號(hào):Java知音】


          背景


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

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

          • 無(wú)法知道每個(gè)服務(wù)的運(yùn)行情況,例如,某一臺(tái)服務(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)延遲是多少?
          • 如何評(píng)估服務(wù)的容量,隨著服務(wù)的調(diào)用量越來(lái)越大,這個(gè)服務(wù)需要多少機(jī)器來(lái)支撐?什么時(shí)候應(yīng)該加機(jī)器?
          • 基于 Spring Boot + MyBatis Plus + Vue 3.2 + Vite + Element Plus 實(shí)現(xiàn)的前后端分離博客,包含后臺(tái)管理系統(tǒng),支持文章、分類、標(biāo)簽管理、儀表盤等功能。

            • GitHub 地址:https://github.com/weiwosuoai/WeBlog
            • Gitee 地址:https://gitee.com/AllenJiang/WeBlog

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


          使用場(chǎng)景





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



          特性





          • 高性能: 單線程支持每秒 1000萬(wàn)次 響應(yīng)時(shí)間的記錄,每次記錄只花費(fèi) 73納秒
          • 無(wú)侵入: 采用 JavaAgent 方式,對(duì)應(yīng)用程序完全無(wú)侵入,無(wú)需修改應(yī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)控,最低 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)用,對(duì)應(yīng)用代碼完全沒(méi)有侵入。

          下載
          • 下載并解壓 MyPerf4J-ASM.zip
          • 閱讀解壓出的 README 文件
          • 修改解壓出的 MyPerf4J.properties 配置文件中 app_namemetrics.log.xxx 和 filter.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
          開(kāi)源地址:https://github.com/LinShunKang/MyPerf4J
              
                 

          1. 前后端分離,開(kāi)源的 Spring Boot + Vue 3.2 的博客,泰褲辣!

          2. SpringBoot+Redis BitMap 實(shí)現(xiàn)簽到與統(tǒng)計(jì)功能

          3. 巧用 MyBatis Plus 實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制

          4. SpringBoot 最大連接數(shù)及最大并發(fā)數(shù)是多少???

          最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù) Java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

          PS:因公眾號(hào)平臺(tái)更改了推送規(guī)則,如果不想錯(cuò)過(guò)內(nèi)容,記得讀完點(diǎn)一下在看,加個(gè)星標(biāo),這樣每次新文章推送才會(huì)第一時(shí)間出現(xiàn)在你的訂閱列表里。

          點(diǎn)“在看”支持小哈呀,謝謝啦

          瀏覽 6185
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  国产毛片精品一区二区色欲黄A片 | 欧美激情中文字幕 | 成人做爰黄 片视频动漫 | 亚洲免费观看在线观看 | 91精品少妇高潮一区二区三区不卡 |