再見,本地環(huán)境!騰訊云全球首發(fā):Serverless在線遠(yuǎn)程調(diào)試

來源: TencentServerless
作者:松鵝
時間:2021-01-07
17182
本篇文章將以一段內(nèi)存泄漏的代碼為例,給大家展示如何使用云函數(shù)在線調(diào)試功能定位和解決問題。Node10及以上版本的runtime,使用Chrome瀏覽器打開云函數(shù)控制臺,在函數(shù)代碼頁即可看到在線調(diào)試的入口。

在線調(diào)試是云函數(shù)為了解決用戶在本地搭建調(diào)試環(huán)境復(fù)雜,云上環(huán)境不便于定位等問題推出的功能。

云上的各種服務(wù),在本地?zé)o法完全模擬,程序員大都遇到過本地和遠(yuǎn)程環(huán)境運(yùn)行結(jié)果不一致的情形,追查起來費(fèi)時費(fèi)力,不僅效率低下,也造成非常郁悶的工作體驗(yàn)。

所以,能否直接在遠(yuǎn)程環(huán)境中完成全部的開發(fā)流程,是提升開發(fā)體驗(yàn)的最直接手段,然而在其他問題都解決后,遠(yuǎn)程調(diào)試功能是最后的一公里。

本篇文章將以一段內(nèi)存泄漏的代碼為例,給大家展示如何使用云函數(shù)在線調(diào)試功能定位和解決問題。Node10及以上版本的runtime,使用Chrome瀏覽器打開云函數(shù)控制臺,在函數(shù)代碼頁即可看到在線調(diào)試的入口。

開啟調(diào)試模式

使用Chrome瀏覽器打開函數(shù)代碼編輯頁,可以看到在【遠(yuǎn)程調(diào)試】頁。為保障調(diào)試的體驗(yàn),開啟調(diào)試模式將修改函數(shù)的部分配置,包括函數(shù)進(jìn)入單實(shí)例模式、函數(shù)超時時間修改為900秒等。開啟前請務(wù)必確認(rèn)這些調(diào)整。

640.png

待加載完成后,頁面將自動展示入口文件。

找不到需要的文件?

使用快捷鍵Cmd+P(Mac)或Ctrl+P(Windows)可以打開所需要的文件。但大家可能會發(fā)現(xiàn),剛開啟調(diào)試模式時,打開文件的列表中找不到所需要的文件。這是因?yàn)閷τ趧討B(tài)腳本語言來說,調(diào)試器不會加載所有的內(nèi)容,只會加載執(zhí)行過的文件。我們先點(diǎn)擊測試,讓函數(shù)運(yùn)行一次。在運(yùn)行一次后,我們就可以打開所需要的文件了。

640 (1).png

設(shè)置斷點(diǎn)

在代碼前點(diǎn)擊即可設(shè)置斷點(diǎn),在右上角的工具中可以進(jìn)行繼續(xù)執(zhí)行、跨步執(zhí)行、單步執(zhí)行等操作,也可以靈活地啟動或禁用斷點(diǎn)。

640 (2).png

內(nèi)存泄漏排查-內(nèi)存快照

這部分介紹如何使用內(nèi)存快照功能排查內(nèi)存泄漏的問題。內(nèi)存泄漏的排查方法大致為:找準(zhǔn)內(nèi)存泄漏的時機(jī),在泄漏的前后對內(nèi)存進(jìn)行快照,通過對比快照的內(nèi)容判斷內(nèi)存泄漏的問題點(diǎn)。

首先,我們將調(diào)試的窗口切換到Memory頁面,點(diǎn)擊左上方的實(shí)心圓形按鈕捕捉內(nèi)存快照。

640 (3).png

這樣,我們就有了運(yùn)行前的內(nèi)存快照?,F(xiàn)在我們執(zhí)行存在內(nèi)存泄漏的代碼。這行代碼有一個從未清理的全局緩存,隨著調(diào)用的增加,越來越占內(nèi)存。

640 (4).png

隨后,我們進(jìn)行第二次內(nèi)存快照,打開對比頁面,通過對Delta值的分析,可以發(fā)現(xiàn)concatenated string這個部分增加了很多,很有可能有問題。

640.webp.jpg

打開以后,便可以發(fā)現(xiàn)內(nèi)存中多存儲了很多“recording time”的數(shù)據(jù)。

640.webp (2).jpg

這些重復(fù)性的數(shù)據(jù)也就意味著代碼中出現(xiàn)了內(nèi)存泄漏,在代碼中找到相關(guān)內(nèi)容,進(jìn)行調(diào)整,解決內(nèi)存泄漏的問題。

除了云函數(shù)的控制臺,也可以使用Serverless Framework Dev模式開啟在線調(diào)試的功能。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于TencentServerless,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多