之所以寫(xiě)這篇技術(shù)文章旭寿,是因?yàn)檫@兩天發(fā)現(xiàn)了一些感覺(jué)很牛逼的東西,本著分享的態(tài)度崇败,跟大家一起交流一下盅称,如果高手,那么我們多交流后室,如果是小輩缩膝,可以進(jìn)行深入學(xué)習(xí)。
記得以前在阿里做研發(fā)的時(shí)候岸霹,需要應(yīng)對(duì)雙11的大流量訪問(wèn)疾层,保證付款環(huán)節(jié)的穩(wěn)定性,經(jīng)歷過(guò)兩個(gè)迭代的性能優(yōu)化贡避,當(dāng)然更多的是進(jìn)行業(yè)務(wù)層面的優(yōu)化痛黎,通過(guò)緩存予弧,多線程,縮短程序執(zhí)行路徑湖饱,增加上下文桌肴,服務(wù)降級(jí),資源開(kāi)關(guān)琉历,SQL調(diào)優(yōu)等坠七,當(dāng)時(shí)用到過(guò)一個(gè)工具叫TProfiler,來(lái)查看方法耗時(shí)的旗笔,可以具體到每一個(gè)get,set方法的耗時(shí)彪置,當(dāng)然可以通過(guò)設(shè)置包路徑,來(lái)過(guò)濾不必要的耗時(shí)信息蝇恶,TProfiler是淘寶自研的性能監(jiān)控工具拳魁,源碼地址:http://code.taobao.org/p/tprofiler/wiki/index/ ,大家可以查看撮弧,整個(gè)過(guò)程是 在JVM啟動(dòng)時(shí)把時(shí)間采集程序注入到字節(jié)碼中,整個(gè)過(guò)程無(wú)需修改應(yīng)用源碼.運(yùn)行時(shí)會(huì)把數(shù)據(jù)寫(xiě)到日志文件潘懊,工程師通過(guò)查看日志,來(lái)斷言一些很耗時(shí)的方法體贿衍,并進(jìn)行性能優(yōu)化授舟。
接下來(lái)我再來(lái)講一下什么是APM,對(duì)于APM贸辈,其實(shí)之前我也不是很清楚释树,壓根沒(méi)聽(tīng)說(shuō)過(guò),也是前兩天擎淤,晚上再阿里云市場(chǎng)上瀏覽SAAS中間件的時(shí)候奢啥,偶然發(fā)現(xiàn)的,當(dāng)時(shí)發(fā)現(xiàn)有一個(gè)中間件嘴拢,當(dāng)然好奇之心讓我對(duì)于他們宣揚(yáng)的“實(shí)時(shí)抓取緩慢的程度和SQL語(yǔ)句”必須要一探究竟桩盲,于是,我就去官網(wǎng)? https://www.oneapm.com/ 想進(jìn)行一次試用席吴,中文名叫:藍(lán)海訊通赌结,布署其實(shí)非常簡(jiǎn)單,只需要下載一個(gè)文件OneAPM抢腐,將這個(gè)文件夾放到tomcat根本錄姑曙,然后修改oneapm.properties文件襟交,將獲取到的試用key值填進(jìn)去就可迈倍,這個(gè)是必須要填的,要不然人家怎么去管控你捣域,填完之后啼染,使用java -jar oneapm.jar install宴合,將這個(gè)jar包安裝一下,這個(gè)命令主要會(huì)去修改你的 catalina.sh文件迹鹅,增加兩行命令卦洽,啟動(dòng)的時(shí)候,會(huì)去將這個(gè)jar包裝載到j(luò)vm里面斜棚,原理根TProfiler應(yīng)當(dāng)差不多阀蒂,通過(guò)值入字節(jié)碼去采集日志信息,接下來(lái)重啟就可以了弟蚀。 ? 等五分鐘蚤霞,登錄到www.oneapm.com點(diǎn)擊AI查看即可。 下來(lái)我貼幾張圖义钉,供大家觀看
下圖就是AI的主頁(yè)面昧绣,差不多5分鐘內(nèi)會(huì)將數(shù)據(jù)上報(bào)到oneapm的服務(wù)器,我們就可以很清楚的看到每個(gè)請(qǐng)求的API的耗時(shí)情況
那么我們點(diǎn)擊一個(gè)事務(wù)進(jìn)去看一下究竟捶闸,在后臺(tái)任務(wù)響應(yīng)時(shí)間里面夜畴,有很詳細(xì)的本次請(qǐng)求里,每個(gè)方法的執(zhí)行耗時(shí)
那么如果能知道拓?fù)鋱D删壮,那就更好了贪绘,見(jiàn)下圖,本次請(qǐng)求央碟,有該問(wèn)外網(wǎng)兔簇,redis, database
光知道拓?fù)淇隙ú贿^(guò)癮,沒(méi)關(guān)系硬耍,繼續(xù)往下看垄琐,可以很清晰的知道,請(qǐng)求redis的set,sadd,get,del的調(diào)用次數(shù)经柴,耗時(shí)都有狸窘。
本文寫(xiě)到這里,肯定沒(méi)完坯认,APM縮寫(xiě)是? Application Performance Management & Monitoring翻擒,應(yīng)用程序的性能服務(wù)管理和監(jiān)控,興奮之余牛哺,準(zhǔn)備布署到我們集群開(kāi)始使用陋气,正好性能優(yōu)化可以用上,問(wèn)題是云版的SAAS ?oneapm引润,每個(gè)月一個(gè)jvm 999元巩趁,作為合格的程序員,本著能開(kāi)源絕不掏錢的思路淳附,就有了下面的篇幅议慰。
在官網(wǎng)上發(fā)現(xiàn)其合作伙伴有美團(tuán)云
馬上讓我同學(xué)聯(lián)系了美團(tuán)云的同學(xué)的了解使用情況蠢古,得到了其實(shí)APM國(guó)外很早之前就有公司在做了,有一個(gè)叫new relic再做别凹,百度了一下草讶,蟬游記團(tuán)隊(duì)也在一年前推薦過(guò),官網(wǎng):https://newrelic.com ? 大家可以去注冊(cè)炉菲,下載堕战,布署方式跟oneapm是完全一樣的,安裝過(guò)程我就不一一講了拍霜,挺簡(jiǎn)單的践啄。
差不多15分鐘吧,就整完了沉御,主要還需要VPN屿讽,稍慢一點(diǎn),要不然5分鐘都不需要吠裆。
環(huán)境打通后伐谈,記得那個(gè)key,一定要修改newrelic.yml ?這個(gè)文件试疙,key變一下诵棵,重啟就可以了。
等5分鐘進(jìn)行數(shù)據(jù)上報(bào)吧祝旷,刷一下頁(yè)面有了履澳,My Application就是我的應(yīng)用
點(diǎn)擊My Application,大家其實(shí)可以看一下怀跛,跟oneapm其實(shí)差不多距贷,耗時(shí),事務(wù)都有吻谋,還有用戶滿意度apdex score忠蝗,這個(gè)需要自定義一些參數(shù),這樣apm就會(huì)按照算法給出得分
點(diǎn)擊具體的一個(gè)方法漓拾,進(jìn)行阁最,看一下詳情,在詳情面骇两,我們可以看到吞吐量速种,以及這個(gè)API對(duì)調(diào)用的方法,DB的耗時(shí)趨勢(shì)圖低千,這個(gè)就比TProfiler方便多了配阵,TProfiler得人肉看日志
這個(gè)是DB和redis的耗時(shí)情況,以及占比
那么所有的DB耗時(shí)的整體情況趨勢(shì)也是可以看到的
這個(gè)是redis的
JVM層面肯定是少不了的,堆內(nèi)存闸餐,新生代饱亮,老年代都是可以查看的
線程池矾芙,以及線程數(shù)
數(shù)據(jù)報(bào)告
當(dāng)然舍沙,啟動(dòng)參數(shù),以及所有的jar包剔宪,以及jar包版本拂铡,都是一覽無(wú)余
這其實(shí)也只是APM的一個(gè)功能,針對(duì)server端進(jìn)行的監(jiān)控葱绒,還有針對(duì)客戶端感帅,針對(duì)web前端功能都是你想象不到的細(xì)粒度。
另外很重要的一點(diǎn)就是地淀,newrelic目前是免費(fèi)的J颉!帮毁!实苞,工欲善其事,必先利其器烈疚,有了這個(gè)神器黔牵,系統(tǒng)的性能耗時(shí),一個(gè)普通的工程師稍加指導(dǎo)其實(shí)就可以進(jìn)行性能優(yōu)化了爷肝,newrelic不單單支持java猾浦,php,ruby等等都可以布署使用。
還有很多好玩的一些技術(shù)灯抛,篇幅有限金赦,等下次再跟大家分享吧。