观看麻豆影视文化有限公司-国产 高清 在线-国产 日韩 欧美 亚洲-国产 日韩 欧美 综合-日日夜夜免费精品视频-日日夜夜噜

apm是什么意思(pm和apm是什么意思)

  • 生活
  • 2023-04-27 15:31
篇幅一:APM基礎(chǔ)篇1、什么是APM?

APM,全稱:ApplicationPerformanceManagement,目前市面的系統(tǒng)基本都是參考Google的Dapper(大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng))來做的,翻譯傳送門《google的Dapper中文翻譯》

思考下:不遵守該理論的是偽APM,耍流氓嗎?

APM的核心思想是什么?在應(yīng)用服務(wù)各節(jié)點(diǎn)相互調(diào)用的時(shí)候,從中記錄并傳遞一個(gè)應(yīng)用級(jí)別的標(biāo)記,這個(gè)標(biāo)記可以用來關(guān)聯(lián)各個(gè)服務(wù)節(jié)點(diǎn)之間的關(guān)系。比如兩個(gè)應(yīng)用服務(wù)節(jié)點(diǎn)之間使用HTTP作為傳輸協(xié)議的話,那么這些標(biāo)記就會(huì)被加入到HTTP頭中。可見如何傳遞這些標(biāo)記是與應(yīng)用服務(wù)節(jié)點(diǎn)之間使用的通訊協(xié)議有關(guān)的,常用的協(xié)議就相對(duì)容易加入這些內(nèi)容,一些按需定制的可能就相對(duì)困難些,這一點(diǎn)也直接決定了實(shí)現(xiàn)分布式追蹤系統(tǒng)的難度。

2、為什么要用APM?

有業(yè)務(wù)痛點(diǎn),才要尋求解決方案,個(gè)人認(rèn)為,APM需要優(yōu)先解決測(cè)試環(huán)境下兩個(gè)場(chǎng)景問題,基于測(cè)試先行的原則考慮:

優(yōu)先關(guān)注宏觀數(shù)據(jù),并不是說測(cè)試人員無須關(guān)注微觀層面的問題,在測(cè)試角度來看,先解決性能測(cè)試環(huán)境的數(shù)據(jù)采樣、收集問題,再去評(píng)估生產(chǎn)環(huán)境,而線上的鏈路監(jiān)控需要研發(fā)跟運(yùn)維去配合,【研發(fā)角度場(chǎng)景】相對(duì)于測(cè)試人員來說是弱關(guān)注了。

3、市面上有哪些APM工具?PinpointPinpointisanopensourceAPM(ApplicationPerformanceManagement)toolforlarge-scaledistributedsystemswritteninJava.https://github.com/naver/pinpointSkyWalkingAdistributedtracingsystem,andAPM(ApplicationPerformanceMonitoring).http://skywalking.orgZipkinZipkinisadistributedtracingsystem.Ithelpsgathertimingdataneededtotroubleshootlatencyproblemsinmicroservicearchitectures.Itmanagesboththecollectionandlookupofthisdata.Zipkin’sdesignisbasedontheGoogleDapperpaper.http://zipkin.io/CAT(大眾點(diǎn)評(píng))CAT基于Java開發(fā)的實(shí)時(shí)應(yīng)用監(jiān)控平臺(tái),包括實(shí)時(shí)應(yīng)用監(jiān)控,業(yè)務(wù)監(jiān)控。https://github.com/dianping/cat4、先說結(jié)論

目前比較貼合GoogleDapper原理設(shè)計(jì)的,Pinpoint優(yōu)于Zipkin。Pinpoint對(duì)代碼的零侵入,運(yùn)用JavaAgent字節(jié)碼增強(qiáng)技術(shù),添加啟動(dòng)參數(shù)即可。并且符合【測(cè)試角度場(chǎng)景】性能測(cè)試調(diào)優(yōu)監(jiān)控的宏觀;當(dāng)然,結(jié)論太早了,會(huì)有疑惑:

“SpringCloudSlueth和zipkin之間的關(guān)系是什么?“

需要看詳細(xì)對(duì)比的,詳見下圖:

5、再說對(duì)比

本質(zhì)上SpringCloudSlueth與Pinpoint沒有可比性,真正對(duì)比的是Zipkin,SpringCloudSlueth聚焦在鏈路追蹤和分析,將信息發(fā)送到Zipkin,利用Zipkin的存儲(chǔ)來存儲(chǔ)信息,當(dāng)然,Zipkin也可以使用ELK來記錄日志和展示,再通過收集服務(wù)器性能的腳本把數(shù)據(jù)存儲(chǔ)到ELK,則可以展示服務(wù)器狀況信息了。Zipkin的總體展示,也是基于鏈路分析為主。

篇幅二:Pinpoint實(shí)戰(zhàn)篇1、Pinpoint架構(gòu)圖

PinpointisanopensourceAPM(ApplicationPerformanceManagement)toolforlarge-scaledistributedsystemswritteninJava.

架構(gòu)圖對(duì)應(yīng)說明:

Pinpoint-Collector:收集各種性能數(shù)據(jù)Pinpoint-Agent:探針與應(yīng)用服務(wù)器(例如tomcat)關(guān)聯(lián),部署到同一臺(tái)服務(wù)器上Pinpoint-Web:將收集到的數(shù)據(jù)層現(xiàn)在web展示HBaseStorage:收集到數(shù)據(jù)存到HBase中2、Pinpoint的數(shù)據(jù)結(jié)構(gòu)

Pinpoint消息的數(shù)據(jù)結(jié)構(gòu)主要包含三種類型Span,Trace和TraceId。

Span是最基本的調(diào)用追蹤單元當(dāng)***調(diào)用到達(dá)的時(shí)候,Span指代處理該調(diào)用的作業(yè),并且攜帶追蹤數(shù)據(jù)。為了實(shí)現(xiàn)代碼級(jí)別的可見性,Span下面還包含一層SpanEvent的數(shù)據(jù)結(jié)構(gòu)。每個(gè)Span都包含一個(gè)SpanId。Trace是一組相互關(guān)聯(lián)的Span***同一個(gè)Trace下的Span共享一個(gè)TransactionId,而且會(huì)按照SpanId和ParentSpanId排列成一棵有層級(jí)關(guān)系的樹形結(jié)構(gòu)。TraceId是TransactionId、SpanId和ParentSpanId的組合TransactionId(TxId)是一個(gè)交易下的橫跨整個(gè)分布式系統(tǒng)收發(fā)消息的ID,其必須在整個(gè)服務(wù)器組中是全局唯一的。也就是說TransactionId識(shí)別了整個(gè)調(diào)用鏈;SpanId(SpanId)是處理***調(diào)用作業(yè)的ID,當(dāng)一個(gè)調(diào)用到達(dá)一個(gè)節(jié)點(diǎn)的時(shí)候隨即產(chǎn)生;ParentSpanId(pSpanId)顧名思義,就是產(chǎn)生當(dāng)前Span的調(diào)用方Span的ID。如果一個(gè)節(jié)點(diǎn)是交易的最初發(fā)起方,其ParentSpanId是-1,以標(biāo)志其是整個(gè)交易的根Span。下圖能夠比較直觀的說明這些ID結(jié)構(gòu)之間的關(guān)系。3、Pinpoint部署

網(wǎng)上太多部署文檔,這里不詳細(xì)說明,簡(jiǎn)要說明下:

注意版本要求:

有兩種方式啟動(dòng):

方式一:修改tomat目錄下bin/catalina.sh,在ControlScriptfortheCATALINAServer加入以下三行代碼:

復(fù)制代碼

CATALINA_OPTS="$CATALINA_OPTS-javaagent:/home/webapps/service/pp-agent/pinpoint-bootstrap-1.6.2.jar"CATALINA_OPTS="$CATALINA_OPTS-Dpinpoint.agentId=pp32tomcattest"CATALINA_OPTS="$CATALINA_OPTS-Dpinpoint.applicationName=32tomcat"

第一行:pinpoint-bootstrap-1.6.2.jar的位置第二行:agentId必須唯一,標(biāo)志一個(gè)jvm第三行:applicationName表示同一種應(yīng)用:同一個(gè)應(yīng)用的不同實(shí)例應(yīng)該使用不同的agentId,相同的applicationName

方式二:SpringBoot啟動(dòng)

復(fù)制代碼

java-javaagent:/home/webapps/pp-agent/pinpoint-bootstrap-1.6.2.jar-Dpinpoint.agentId=pp32tomcattest-Dpinpoint.applicationName=32tomcat-jar32tomcat-0.0.1-SNAPSHOT.jar4、代碼注入是如何工作的

Pinpoint對(duì)代碼注入的封裝非常類似AOP,當(dāng)一個(gè)類被加載的時(shí)候會(huì)通過Interceptor向指定的***前后注入before和after邏輯,在這些邏輯中可以獲取系統(tǒng)運(yùn)行的狀態(tài),并通過TraceContext創(chuàng)建Trace消息,并發(fā)送給Pinpoint服務(wù)器。但與AOP不同的是,Pinpoint在封裝的時(shí)候考慮到了更多與目標(biāo)代碼的交互能力,因此用Pinpoint提供的API來編寫代碼會(huì)比AOP更加容易和***。

5、Pinpoint實(shí)戰(zhàn)效果演示

搭建一個(gè)java開源項(xiàng)目jforum,跑在tomcat下,使用jmeter進(jìn)行壓測(cè),用戶100個(gè):

服務(wù)器圖(ServerMap)通過可視化其組件的互連方式來了解任何分布式系統(tǒng)的拓?fù)洹螕艄?jié)點(diǎn)將顯示有關(guān)組件的詳細(xì)信息,例如其當(dāng)前狀態(tài)和事務(wù)計(jì)數(shù)。實(shí)時(shí)活動(dòng)線程圖(RealtimeActiveThreadChart)實(shí)時(shí)監(jiān)視應(yīng)用程序內(nèi)的活動(dòng)線程。(用了官方圖,當(dāng)時(shí)沒截圖)請(qǐng)求/響應(yīng)散布圖(Request/ResponseScatterChart)可視化請(qǐng)求計(jì)數(shù)和響應(yīng)模式,以確定潛在問題。可以通過在圖表上拖動(dòng)來選擇事務(wù)以獲取更多詳細(xì)信息。調(diào)用棧信息(CallStack)增強(qiáng)分布式環(huán)境中每個(gè)事務(wù)的代碼級(jí)可見性,識(shí)別單個(gè)視圖中的瓶頸和故障點(diǎn)。檢查器(Inspector)

查看應(yīng)用程序的其他詳細(xì)信息,如CPU使用率,內(nèi)存/垃圾收集,TPS和JVM參數(shù)。

6、總結(jié)

第一:PinPoint從宏觀上看:總體鏈路、服務(wù)總體狀態(tài)(cpu、內(nèi)存等等信息),符合【測(cè)試角度場(chǎng)景】性能測(cè)試調(diào)優(yōu)監(jiān)控的宏觀;第二:SpringCloudSlueth需要結(jié)合Zipkin從微觀來看:自身無法單獨(dú)提供展示,要結(jié)合Zipkin展示鏈路問題(并沒有服務(wù)器總體狀態(tài)的展示),更多服務(wù)器性能狀況等信息展示需要定制腳本通過ELK收集展示,符合【研發(fā)角度場(chǎng)景】性能測(cè)試調(diào)優(yōu)監(jiān)控的微觀;

總的來說兩者是結(jié)合體,要單獨(dú)使用的話,從測(cè)試業(yè)務(wù)上來看:PinPoint滿足,性能測(cè)試調(diào)優(yōu)監(jiān)控的宏觀【測(cè)試角度場(chǎng)景】

7、項(xiàng)目場(chǎng)景

訪問某個(gè)API,后端應(yīng)用服務(wù)產(chǎn)生的一系列鏈路,為何請(qǐng)求一次有23次數(shù)據(jù)庫訪問呢?這里就是需要排查的的地方,詳細(xì)看看CallTree,找出可優(yōu)化的SQL查詢語句。

另外,在做性能測(cè)試的時(shí)候,服務(wù)器并發(fā)的IO,PP不斷寫入也會(huì)產(chǎn)生瓶頸,需要后續(xù)解決。

8、標(biāo)簽庫項(xiàng)目簡(jiǎn)單壓測(cè)

通過jmeter對(duì)標(biāo)簽庫進(jìn)行簡(jiǎn)單壓測(cè),腳本如下:

通過APM發(fā)現(xiàn)問題如下:

pquery.do的res高達(dá)6782ms,需要安排開發(fā)進(jìn)一步排查定位代碼問題

另外一種場(chǎng)景,測(cè)試人員無法在頁面獲取到的信息(有些情況下,測(cè)試人員是沒有服務(wù)器權(quán)限),這些是服務(wù)底層的異常信息,可以通過CallTree來查看。

9、應(yīng)用服務(wù)接入APM后的鏈路全景蜘蛛網(wǎng)圖參考文獻(xiàn):

Pinpointgithub

Pinpoint源碼解析(三)Dapper,大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng)Pinpoint學(xué)習(xí)筆記Pinpointv1.5.0APM視頻介紹

原文地址:https://www.infoq.cn/article/apm-Pinpoint-practice/?utm_source=infoq&utm_medium=popular_widget&utm_campaign=popular_content_list&utm_content=homepage

猜你喜歡

主站蜘蛛池模板: 黄色一级片在线看 | 亚洲精品久久精品h成人 | 国产91色综合久久免费 | 日韩免费观看一级毛片看看 | 亚洲一级免费视频 | 精品在线视频免费观看 | 日本一区二区三区四区五区 | 一区高清 | 永久免费不卡在线观看黄网站 | 国产亚洲精品影达达兔 | 成年人免费毛片 | 久久99精品九九九久久婷婷 | 国产精品日韩欧美一区二区 | 九草在线观看 | 亚洲欧洲日本天天堂在线观看 | 国产伦精品一区二区三区四区 | 成年女人看片免费视频播放器 | 日本在线免费播放 | 久久久久亚洲精品影视 | 亚洲一级高清在线中文字幕 | 初爱视频教程在线观看高清 | 亚洲国产精品一区二区三区在线观看 | 91成人免费观看在线观看 | 毛片在线全部免费观看 | 久久成人免费观看全部免费 | 国产成人一区免费观看 | 日韩精品特黄毛片免费看 | 免费看三级毛片 | 欧美综合视频在线观看 | 日本免费视 | 午夜欧美成人香蕉剧场 | 国产日本韩国不卡在线视频 | 国产老鸭窝毛片一区二区 | 久久不雅视频 | 亚洲综合色在线观看 | 国产一级二级三级毛片 | 欧美高清视频在线观看 | 欧美高清在线 | 亚洲另类视频在线观看 | 国产免费成人在线视频 | 波多野结衣中文在线播放 |