注意:
所有診斷操作請順序執行。一個操作未完成時進行下一個操作會提示操作失敗。文件
頁面轉儲
按鈕有效時表明操作已完成(診斷報告數秒可完成,堆快照根據堆大小可能數秒到數分鐘,其他操作持續時間為 3 分鐘)。
抓取性能數據
進入應用控制臺,點擊想查看的應用 實例
按鈕,進入對應的實例即可查看 Node.js 性能平臺提供的 抓取性能數據
功能,如下圖所示:
一般來說,如果涉及到內存泄漏的,可以抓取 堆快照,如果是 CPU 異常飆高的,可以抓取 CPU Profile 數據,下面我們以一個 CPU 異常飆高和內存泄漏的例子來看下如何使用 Node.js 性能平臺提供的故障診斷功能。
CPU 異常飆高
發生 CPU 異常飆高時,點擊上圖中的 CPU Profile 按鈕,會在線生成三分鐘的 CPU Profile 的日志文件,點擊導航欄左側的 文件
選項,即可看到剛才生成的 CPU Profile 文件,轉儲至云端后如下圖所示:
Node.js 性能平臺提供了兩種分析 CPU Profile 的工具,下面逐一介紹:
火焰圖
點擊上圖中的第一個 分析
按鈕,則進入火焰圖分析,如下圖所示:
很明顯,profiling 期間用戶編寫耗時比較大的函數為 test.js 中的 slow 函數,占據了整個 profiling 時長的 75.5%,所以接下來我們只要去對 slow 函數進行優化就可以了。
devtools
點擊上圖中的第二個 分析
按鈕,則進入 devtools 分析,如下圖所示:
同樣,slow 函數執行耗費最久,顯然需要優化
內存泄漏
發生內存泄漏時,點擊第一節圖中的 堆快照
按鈕,會在線把當前進程的堆結構 dump 成文件,點擊導航欄左側的 文件
選項,即可看到剛才生成的堆快照文件,轉儲至云端后如下圖所示:
同樣提供了兩種分析方式,下面逐一介紹:
MAT 分析
點擊上圖中的第一個 分析
按鈕,則進入 MAT 分析,如下圖所示:
可以看到,泄漏點是 test-alinode.js 文件中的一個 array 數組
devtools 分析
devtools 分析功能和 chrome 自帶的體驗一致,如下圖所示:
更多案例
更多的實際項目中的檢測案例請參見 最佳實踐 一節