在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

技術速遞 | Java Agent場景性能測試分析優(yōu)化經(jīng)驗分享

華為DevCloud ? 來源:未知 ? 2023-03-25 07:55 ? 次閱讀

作者:欒文飛 高階軟件工程師

一、背景介紹

Sermant是一個主打服務治理領域的Java Agent框架,在服務治理中難免會有針對業(yè)務流量進行解析和處理的過程,此類服務治理能力將會對微服務的服務能力產(chǎn)生一定的性能影響,作為一個基于Java Agent技術做服務治理的框架,我們需要在保證服務治理能力生效的同時,極小的影響微服務原有的服務性能。

雖然基于Java Agent的服務治理和基于SDK的服務治理在其原理上有所不同,但也避免不了微服務治理過程中產(chǎn)生對微服務原有性能的影響,基于Java Agent服務治理方式的相較于SDK的服務治理方式免去了侵入式的代碼開發(fā),是一種運行時技術,所以還需要考慮更多方面性能優(yōu)化問題,例如在啟動時間,運行時增強性能開銷等,本文將以Sermant的SpringBoot 注冊插件的性能測試及優(yōu)化過程為例,分享在Java Agent場景如何進行更好的性能測試優(yōu)化及在Java Agent下需要著重注意的性能陷阱。

SpringBoot 注冊插件為SpringBoot應用提供服務注冊發(fā)現(xiàn)能力,可用于在不修改原有代碼的前提下快速從ESB架構演進為微服務架構,在該插件中包含針對域名的替換能力,服務注冊發(fā)現(xiàn)能力,請求的超時重試等,為架構的成功演進,原有架構中基于域名的請求調用,將會被基于注冊信息的請求調用(通過該插件的服務注冊發(fā)現(xiàn)能力,獲取服務提供者注冊的信息)所取代,如下圖所示:

5af180b2-ca9e-11ed-bfe3-dac502259ad0.png

在域名處理的過程是必然會參與到調用過程中的,這是服務治理能力對業(yè)務性能影響的典型場景。

二、測試方案

眾所周知,Java Agent程序和被增強應用運行時同進程,Java Agent程序最重要的是不能對被掛載的應用產(chǎn)生異常影響,導致應用不可用,所以Sermant在運行時的處理性能及穩(wěn)定性等做多方面的測試考量。在針對微服務進行測試的過程中,我們往往只需要關注該微服務的性能即可,通過壓力測試來檢驗微服務的服務提供能力,由于服務治理能力并不直接提供服務,我們更多地需要關注在開啟服務治理能力時,對微服務本身服務提供能力的影響,所以我們在測試方案中需要進行對比測試來評估服務治理能力的好壞。

本對照測試中,我們通過壓力測試讓系統(tǒng)達到極限場景(consumer端的CPU已經(jīng)到達瓶頸),來分析攜帶Sermant并啟用服務治理能力時,對應用原有服務提供能力的影響,此處采用兩種部署方案:

  • 不攜帶Sermant,基于網(wǎng)關的場景,是架構改造前的運行模式

  • 攜帶Sermant的場景,是遷移后的微服務架構運行模式

5b57e5c8-ca9e-11ed-bfe3-dac502259ad0.png

注:在這種對比測試中,基于Java Agent的服務治理只需要對攜帶Java Agent程序和不攜帶Java Agent程序的場景進行對照測試即可,無需兩套代碼進行對照測試。

由于Java Agent程序和被增強應用處于統(tǒng)一進程,資源共享,基于上述兩種部署方案進行測試,以不攜帶Java Agent程序作為測試分析的對照組,就可以很清晰的看出引入Java Agent程序后產(chǎn)生的影響,并可根據(jù)對照結果進行優(yōu)化,應用于Sermant上,就可以很容易的分析出Sermant的服務治理能力對微服務本身服務提供能力帶來的影響。

三、性能分析

由于需要針對應用發(fā)起的請求通過字節(jié)碼增量的方式做域名的替換,SpringBoot 注冊插件通過對HttpClient、Openfeign、Okhttp等http客戶端進行了字節(jié)碼增強,我們根據(jù)上一章節(jié)中的測試方案對該插件提供的服務治理能力進行了測試,下面我們以HttpClien為例通過CPU火焰圖來講述如何在Java Agent場景下分析性能瓶頸:

在性能調優(yōu)過程中,我們可通過CPU火焰圖來分析性能瓶頸,火焰圖可以稱之為性能問題分析的"X光",可以很一針見血的看出在程序運行中哪些代碼片段產(chǎn)生了異常的CPU占用。可以參考《使用火焰圖(FlameGraph)分析程序性能》進行學習,當然,采集CPU火焰圖的方式很多,我們只需要學會如何看懂火焰圖即可。

分析步驟

1. 找到字節(jié)碼增強邏輯的CPU占用

在分析過程中,首先需要找到字節(jié)碼增強時選中的被增強方法(本文場景增強方法為InternalHttpClient::doExecute),字節(jié)碼增強需要被增強程序的原有方法調用觸發(fā),所以也可以很清晰的在CPU火焰圖中可以看到,Sermant實現(xiàn)的邏輯調用棧在被增強方法之上,在字節(jié)碼增強邏輯執(zhí)行結束后,被增強方法還會繼續(xù)執(zhí)行。

5b8a418a-ca9e-11ed-bfe3-dac502259ad0.png

所以除被增強方法執(zhí)行的調用棧及CPU時間片占用外,皆為字節(jié)碼增強所引入邏輯,在性能優(yōu)化中需著重關注。

2. 分析異常占用

根據(jù)CPU火焰圖原理,找出字節(jié)碼增強部分,找出異常占用CPU時間片的調用棧,并進行程序的優(yōu)化,如下圖所示紅框選擇部分,皆為字節(jié)碼增強中引入的邏輯,占用了非常多的CPU時間片,由于字節(jié)碼增強程序和被增強程序,這種異常的占用,將會嚴重影響原程序的性能,在針對Java Agent場景的優(yōu)化中可著重優(yōu)化。

5bc75f70-ca9e-11ed-bfe3-dac502259ad0.png

通過上述步驟,我們可以一目了然的看到我們通過Java Agent程序引入的CPU額外占用,具體占用原因本文就不一一分析。

四、性能陷阱

基于上述兩個章節(jié)的測試和分析方法,在本文的最后,列舉出在Java Agent開發(fā)過程中經(jīng)常會遇到的性能陷阱,這里也給出解決方式,可以在開發(fā)中注意:

|減少反射使用

在字節(jié)碼增強開發(fā)過程中,很多情況下,如果類加載器不同,針對被增強應用的類和方法往往需要通過反射去獲取并使用,在我們的性能分析中,反射是一個CPU占用的巨大陷阱,在有些被BootstrapClassLoader加載的類增強時,甚至反射占用了一個方法調用30%以上的CPU時間片。

下圖選中方法中,反射占用該方法調用中的大部分CPU時間片:

5c0c918a-ca9e-11ed-bfe3-dac502259ad0.png

但是由于類加載器的限制,有些反射是必須要使用的,我們也可以通過一定的手段進行優(yōu)化,比如緩存通過反射獲取的類和方法,在字節(jié)碼增強中,多次觸發(fā)增強邏輯時減少反射占用CPU時間片非常有效。

5c4c971c-ca9e-11ed-bfe3-dac502259ad0.png

通過上述步驟優(yōu)化后,通過火焰圖來看,效果是非常顯著的:

5c7ec610-ca9e-11ed-bfe3-dac502259ad0.png

|注意字節(jié)碼增強插樁選擇

在做字節(jié)碼增強時的增強點選擇很重要,字節(jié)碼增強添加Transformer后運行時分為兩種情況:

  • transform:針對尚未被類加載器加載的類,如果添加Transformer,在類被加載時就會觸發(fā)字節(jié)碼的轉換.

  • retransform:針對已經(jīng)被類加載器加載的類,如果添加了Transformer,則需要被重新加載后再進行字節(jié)碼的轉換。

Java中被BootstrapClassLoader加載的類,如果想要進行字節(jié)碼增強,就需要使用第二種字節(jié)碼轉換的方式,可想而知,如果重新加載類再進行轉換必然沒有在類第一次加載時就進行轉換的效率高。

除上述原因之外,在增強啟動類加載器加載的類時,由于雙親委派機制的限制(只能向上委托,不能向下委托),往往都是需要大量使用反射(用于調用其他類加載器加載的類)來實現(xiàn)增強邏輯。

5cd7bef0-ca9e-11ed-bfe3-dac502259ad0.png

上文中也講到,不加節(jié)制的使用反射將會通過Java Agent程序嚴重影響被增強應用的性能,所以在開發(fā)Java Agent時,需要謹慎選擇增強的類,非必要不增強被啟動類加載器加載的類。

上述兩點是在Java Agent開發(fā)過程中最容易發(fā)生的向被增強應用引入的性能陷阱,除此之外,Java Agent也是由Java所開發(fā),在開發(fā)過程中也需要注意不要引入常見的性能陷阱。

Sermant作為專注于服務治理領域的字節(jié)碼增強框架,致力于提供高性能、可擴展、易接入的服務治理體驗,并會在每個版本中做好性能、功能、體驗的看護,廣泛歡迎大家的加入。

Sermant官網(wǎng):https://sermant.io

GitHub倉庫地址:https://github.com/huaweicloud/Sermant

添加Sermant小二(微信號:sermant-support)加入社區(qū)交流群

或掃碼加入Sermant社區(qū)交流群

5d16f0ca-ca9e-11ed-bfe3-dac502259ad0.png


原文標題:技術速遞 | Java Agent場景性能測試分析優(yōu)化經(jīng)驗分享

文章出處:【微信公眾號:華為DevCloud】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 華為
    +關注

    關注

    216

    文章

    34546

    瀏覽量

    253145

原文標題:技術速遞 | Java Agent場景性能測試分析優(yōu)化經(jīng)驗分享

文章出處:【微信號:華為DevCloud,微信公眾號:華為DevCloud】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    混合信號分析儀的原理和應用場景

    分析儀可以同步觀測多個模擬和數(shù)字信號,特別適用于嵌入式系統(tǒng)及外圍電路的測試。通過捕獲和分析這些信號的波形,工程師可以評估系統(tǒng)的性能和穩(wěn)定性,并進行必要的
    發(fā)表于 01-21 16:45

    信號分析儀的原理和應用場景

    方面: 通信領域: 信號分析儀在通信領域中起著重要的作用,可以用于測量和分析無線通信系統(tǒng)中的信號質量和性能指標,如信號強度、調制度、頻率偏移等。 在網(wǎng)絡優(yōu)化和故障排查中,信號
    發(fā)表于 01-17 14:37

    【書籍評測活動NO.55】AI Agent應用與項目實戰(zhàn)

    在電影中,我們經(jīng)常會看到這樣一個場景:主人公早晨剛剛醒來,打開手機后,它的智能助理——AI Agent已經(jīng)為他整理了今天的日程、分析了昨晚的睡眠數(shù)據(jù),并根據(jù)他的情況推薦了早餐菜單,并且還根據(jù)他設定
    發(fā)表于 01-13 11:04

    華為云 X 實例 CPU 性能測試詳解與優(yōu)化策略

    ? 3.2 CPU性能瓶頸分析 ? 4. CPU性能優(yōu)化策略 ? 4.1 優(yōu)化CPU性能的常用
    的頭像 發(fā)表于 12-30 14:52 ?189次閱讀
    華為云 X 實例 CPU <b class='flag-5'>性能</b><b class='flag-5'>測試</b>詳解與<b class='flag-5'>優(yōu)化</b>策略

    測試接收機的技術原理和應用場景

    測試接收機是一種專門用于信號測量和分析的電子設備,具有高精度、高靈敏度、高穩(wěn)定性等特點。以下將詳細闡述測試接收機的技術原理和應用場景。一、
    發(fā)表于 12-03 14:23

    射頻分析儀的技術原理和應用場景

    射頻分析儀是一種功能強大的電子測量儀器,在無線通信、電子測試等領域具有廣泛的應用。以下是關于射頻分析儀的技術原理和應用場景的詳細介紹:一、射
    發(fā)表于 11-26 14:32

    無線連接測試儀的技術原理和應用場景

    技術進行數(shù)據(jù)傳輸。無線連接測試儀可以保障這些設備在醫(yī)院環(huán)境中的穩(wěn)定連接,確保患者數(shù)據(jù)的準確傳輸和實時監(jiān)控。在緊急救援場景中,測試儀能夠快速檢測通信設備的
    發(fā)表于 11-21 14:51

    OTA測試暗箱的技術原理和應用場景

    OTA測試暗箱在無線通信設備的研發(fā)與測試中扮演著至關重要的角色。以下是對OTA測試暗箱技術原理和應用場景的詳細闡述:一、OTA
    發(fā)表于 11-14 14:36

    移動終端測試儀的技術原理和應用場景

    不同的實際環(huán)境中進行現(xiàn)場測試,評估手機的性能表現(xiàn)。 教學和培訓:在電子通信相關的教學和培訓中,便攜綜測儀可以讓學生更直觀地了解手機的性能測試過程。 移動終端
    發(fā)表于 11-04 16:01

    信令測試儀器的技術原理和應用場景

    過程中,信令測試儀器用于定位和解決系統(tǒng)中的故障和問題。通過對信令的測試分析,可以幫助找到故障的原因和發(fā)生的場景,提供故障排查和修復的指導。 通信系統(tǒng)
    發(fā)表于 10-31 14:45

    使用Arthas火焰圖工具的Java應用性能分析優(yōu)化經(jīng)驗

    分享作者在使用Arthas火焰圖工具進行Java應用性能分析優(yōu)化經(jīng)驗
    的頭像 發(fā)表于 10-28 09:27 ?389次閱讀
    使用Arthas火焰圖工具的<b class='flag-5'>Java</b>應用<b class='flag-5'>性能</b><b class='flag-5'>分析</b>和<b class='flag-5'>優(yōu)化</b><b class='flag-5'>經(jīng)驗</b>

    誤碼率測試儀的技術原理和應用場景

    進行分析,如誤碼的分布情況、誤碼的類型等,以便于進一步優(yōu)化數(shù)字通信系統(tǒng)的性能。應用場景誤碼率測試儀在多個領域具有廣泛的應用,包括但不限于:
    發(fā)表于 10-25 14:05

    參數(shù)分析儀的技術原理和應用場景

    儀,如硬度測試儀,通過施加一定的壓力于樣品表面,然后測量樣品的變形或恢復程度來評估其力學性能。這種測試通常基于壓入法或劃痕法等測量技術。 傳感器技術
    發(fā)表于 10-17 14:42

    USB協(xié)議分析儀的技術原理和應用場景

    儀可以作為實驗工具,幫助學生理解USB通信協(xié)議的工作原理。 研究人員可以利用協(xié)議分析儀進行深入的協(xié)議分析性能評估,為USB技術的發(fā)展提供理論支持。 質量保證與
    發(fā)表于 09-24 14:29

    脈沖式線圈測試儀的技術原理和應用場景

    脈沖式線圈測試儀,也被稱為數(shù)字式匝間絕緣測試儀,其技術原理和應用場景如下:技術原理脈沖式線圈測試
    發(fā)表于 09-18 14:29
    主站蜘蛛池模板: 成人午夜影院在线观看 | 综合色久七七综合七七蜜芽 | 91一区二区三区四区五区 | 成人在线播放av | 夜夜夜爽 | 无人区理论片手机看片 | 日本在线看小视频网址 | 手机看片日本 | 狠狠干狠狠操 | 欧美中字| 尻逼尻逼| 婷婷五月在线视频 | 亚洲网站免费 | 美女视频永久黄网站免费观看国产 | 热门国产xvideos中文 | 河南毛片| 欧美激情αv一区二区三区 欧美激情第一欧美在线 | 巨乳色最新网址 | 欧美黄色tv | 国产精品久久久久久久9999 | 天堂网2017| 天天拍天天干 | 精品国产中文一级毛片在线看 | 在线观看www妖精免费福利视频 | 黄色男人的天堂 | 男人天堂伊人网 | 日本xxxx69hd| 欧美日韩一区不卡 | 日本免费不卡视频一区二区三区 | 日韩黄色免费 | bt天堂网在线 | 女人被狂躁视频免费网站 | 黄色毛片基地 | 日韩高清性爽一级毛片免费 | 国产在线精品一区免费香蕉 | 九七婷婷狠狠成人免费视频 | 国产在视频线精品视频2021 | 日本s色大片在线观看 | 久久新视频 | 亚洲午夜久久影院 | 羞涩妩媚玉腿呻吟嗯啊销魂迎合 |