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

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

          共 3130字,需瀏覽 7分鐘

           ·

          2023-06-20 09:43

          程序員的成長之路
          互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
          關(guān)注


          閱讀本文大概需要 2.8 分鐘。

          來自:網(wǎng)絡,侵刪

          背景

          隨著所在公司的發(fā)展,應用服務的規(guī)模不斷擴大,原有的垂直應用架構(gòu)已無法滿足產(chǎn)品的發(fā)展,幾十個工程師在一個項目里并行開發(fā)不同的功能,開發(fā)效率不斷降低。
          于是公司開始全面推進服務化進程,把團隊內(nèi)的大部分工程師主要精力全部都集中到服務化中。服務化可以讓每個工程師僅在自己負責的子項目中進行開發(fā),提高了開發(fā)的效率,但是服務化同時也帶來了其他問題:
          • 無法知道每個服務的運行情況,例如,某一臺服務它目前的 QPS 是多少?它的平均延遲是多少,99% 的延遲是多少,99.9% 的延遲又是多少?
          • 某一個接口響應時間慢,如何定位是哪個方法引起的?
          • 每個服務的負載是否均衡?
          • 當服務出現(xiàn)抖動時,如何判斷是 DB、Cache 還是下游服務引起的?
          • DB 和 Cache 響應延遲是多少?
          • 如何評估服務的容量,隨著服務的調(diào)用量越來越大,這個服務需要多少機器來支撐?什么時候應該加機器?
          針對以上開發(fā)中的煩惱,今天我們介紹一個針對高并發(fā)、低延遲應用設(shè)計的高性能 Java 性能監(jiān)控和統(tǒng)計工具——MyPerf4J。

          使用場景

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

          特性

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

          監(jiān)控指標

          MyPerf4J 為每個應用收集數(shù)十個監(jiān)控指標,所有的監(jiān)控指標都是實時采集和展現(xiàn)的。
          下面是 MyPerf4J 目前支持的監(jiān)控指標列表:
          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
          • 閱讀解壓出的 README 文件
          • 修改解壓出的 MyPerf4J.properties 配置文件中?app_name、metrics.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 啟動參數(shù)里加上以下兩個參數(shù)

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

          運行
          啟動應用,監(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 啟動參數(shù)中去掉以下兩個參數(shù),重啟即可卸載此工具。

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

          開源地址

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

          推薦閱讀:

          Linus,喬布斯,比爾蓋茨,扎克伯格等大佬的辦公桌什么樣?

          為什么不推薦使用 MyBatis 二級緩存?

          互聯(lián)網(wǎng)初中高級大廠面試題(9個G)

          內(nèi)容包含Java基礎(chǔ)、JavaWeb、MySQL性能優(yōu)化、JVM、鎖、百萬并發(fā)、消息隊列、高性能緩存、反射、Spring全家桶原理、微服務、Zookeeper......等技術(shù)棧!

          ?戳閱讀原文領(lǐng)?。?/span>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??朕已閱?

          瀏覽 25
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  麻豆大黑鸡吧 | 青青草青娱乐 | 黄色视频在线观看地址 | 亚洲 欧美 变态 另类 综合 | 精品黄色小视频 |