APM:云引擎性能統(tǒng)計(jì)工具

姓名:馬行健

學(xué)號(hào):16020199036

轉(zhuǎn)載自:https://zhuanlan.zhihu.com/p/26612510

LeanCloud 的云引擎提供了一種支持多種語言的容器服務(wù),由開發(fā)者編寫后端代碼來實(shí)現(xiàn)更復(fù)雜的后端業(yè)務(wù)邏輯,作為云存儲(chǔ)的補(bǔ)充。但對(duì)于云引擎來說,開發(fā)者編寫的后端代碼是一個(gè)「黑盒」,在出現(xiàn)錯(cuò)誤時(shí),開發(fā)者需要自行通過日志中查找出現(xiàn)問題的接口;而如果出現(xiàn)性能問題也只能依靠擴(kuò)容來緩解,事后開發(fā)者還需要自行查找性能瓶頸,LeanCloud 實(shí)在幫不上什么忙。

查找性能瓶頸是解決性能問題的最重要一環(huán)?,F(xiàn)在市面上類似 newrelic 的產(chǎn)品有很多,但往往價(jià)格不菲,因此我們開發(fā)了一個(gè)名為 LeanEngine APM(LeanEngine APM (Beta))的實(shí)驗(yàn)性項(xiàng)目,來幫助云引擎用戶更有針對(duì)性地觀測性能數(shù)據(jù)、定位性能瓶頸。目前 APM 支持 Node.js、Python 和 Java 三種語言。當(dāng)用戶在代碼中接入對(duì)應(yīng)的采集器后,自定義路由的統(tǒng)計(jì)數(shù)據(jù)便會(huì)自動(dòng)上報(bào)至 APM。

APM 報(bào)表頁面可以顯示出調(diào)用量、耗時(shí)和成功率,并且支持按照多種維度進(jìn)行分組和篩選展現(xiàn),下面是部分報(bào)表的截圖。


圖片發(fā)自簡書App

各響應(yīng)代碼的請(qǐng)求量隨時(shí)間變化圖


圖片發(fā)自簡書App

可以選擇時(shí)間粒度和范圍,可以根據(jù)路由、實(shí)例和響應(yīng)代碼進(jìn)行篩選


圖片發(fā)自簡書App


路由匯總統(tǒng)計(jì),可以按照次數(shù)、錯(cuò)誤率和平均響應(yīng)排序

如果開發(fā)者希望統(tǒng)計(jì)某一個(gè)函數(shù)的執(zhí)行情況,特別是調(diào)用外部服務(wù)和進(jìn)行后臺(tái)操作,也可以使用 APM 的「函數(shù)追蹤」功能(具體使用方法見特定語言的采集器文檔)。以 Node.js 為例,我們用 wrapTask 將已有的函數(shù)包裹起來,這樣 APM 便可以統(tǒng)計(jì)到調(diào)用次數(shù)和耗時(shí)等信息:

var apm = require('leanengine-apm');

var sendMail = apm.wrapTask('sendMail', function(template, address) {

? // ...

});

各語言的采集器都是開源的(Node.js 采集器、Python 采集器、Java 采集器),今后我們還會(huì)在 APM 添加更多的工具和功能,幫助開發(fā)者解決云引擎中的性能問題,也歡迎大家將需求提交到 Github Issue 中幫助我們來完善這一產(chǎn)品。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容