姓名:馬行健
學號:16020199036
轉載自:https://zhuanlan.zhihu.com/p/26612510
LeanCloud 的云引擎提供了一種支持多種語言的容器服務饶唤,由開發(fā)者編寫后端代碼來實現(xiàn)更復雜的后端業(yè)務邏輯圈纺,作為云存儲的補充。但對于云引擎來說,開發(fā)者編寫的后端代碼是一個「黑盒」叹誉,在出現(xiàn)錯誤時,開發(fā)者需要自行通過日志中查找出現(xiàn)問題的接口蒸苇;而如果出現(xiàn)性能問題也只能依靠擴容來緩解,事后開發(fā)者還需要自行查找性能瓶頸烘浦,LeanCloud 實在幫不上什么忙抖坪。
查找性能瓶頸是解決性能問題的最重要一環(huán)。現(xiàn)在市面上類似 newrelic 的產品有很多闷叉,但往往價格不菲擦俐,因此我們開發(fā)了一個名為 LeanEngine APM(LeanEngine APM (Beta))的實驗性項目,來幫助云引擎用戶更有針對性地觀測性能數據握侧、定位性能瓶頸蚯瞧。目前 APM 支持 Node.js、Python 和 Java 三種語言藕咏。當用戶在代碼中接入對應的采集器后状知,自定義路由的統(tǒng)計數據便會自動上報至 APM秽五。
APM 報表頁面可以顯示出調用量孽查、耗時和成功率,并且支持按照多種維度進行分組和篩選展現(xiàn)坦喘,下面是部分報表的截圖盲再。
各響應代碼的請求量隨時間變化圖
可以選擇時間粒度和范圍,可以根據路由瓣铣、實例和響應代碼進行篩選
路由匯總統(tǒng)計答朋,可以按照次數、錯誤率和平均響應排序
如果開發(fā)者希望統(tǒng)計某一個函數的執(zhí)行情況棠笑,特別是調用外部服務和進行后臺操作梦碗,也可以使用 APM 的「函數追蹤」功能(具體使用方法見特定語言的采集器文檔)。以 Node.js 為例蓖救,我們用 wrapTask 將已有的函數包裹起來洪规,這樣 APM 便可以統(tǒng)計到調用次數和耗時等信息:
var apm = require('leanengine-apm');
var sendMail = apm.wrapTask('sendMail', function(template, address) {
? // ...
});
各語言的采集器都是開源的(Node.js 采集器、Python 采集器循捺、Java 采集器)斩例,今后我們還會在 APM 添加更多的工具和功能,幫助開發(fā)者解決云引擎中的性能問題从橘,也歡迎大家將需求提交到 Github Issue 中幫助我們來完善這一產品念赶。