使用 Linux Perf
Linux Perf 提供了針對 JavaScript、原生和作業系統層面的低階 CPU 分析。
重要提示:本教程僅適用於 Linux。
操作方式
Linux Perf 通常透過 linux-tools-common
套件提供。透過 --perf-basic-prof
或 --perf-basic-prof-only-functions
我們能夠啟動支援 perf_events 的 Node.js 應用程式。
--perf-basic-prof
將始終寫入檔案 (/tmp/perf-PID.map),這可能導致磁碟空間無限擴展。如果這是一個問題,請使用模組:linux-perf 或 --perf-basic-prof-only-functions
。
兩者之間的主要區別在於 --perf-basic-prof-only-functions
產生的輸出較少,這是一個適合生產環境分析的選擇。
# Launch the application an get the PID
$ node --perf-basic-prof-only-functions index.js &
[1] 3870
然後根據所需的頻率記錄事件
$ sudo perf record -F 99 -p 3870 -g
在此階段,您可能希望對應用程式進行負載測試,以生成更多記錄以進行可靠的分析。完成工作後,通過向命令發送 SIGINT (Ctrl-C) 來關閉 perf 進程。
perf
將在 /tmp
資料夾內生成一個檔案,通常稱為 /tmp/perf-PID.map
(在上面的示例中:/tmp/perf-3870.map
),其中包含每個被調用的函數的跟蹤。
要將這些結果聚合到特定檔案中,執行
$ sudo perf script > perfs.out
原始輸出可能有點難以理解,因此通常將原始檔用於生成火焰圖以進行更好的可視化。
要從此結果生成火焰圖,請按照此教程的第6步進行操作。
因為 perf
輸出並不是一個特定於 Node.js 的工具,它可能在處理 Node.js 中的 JavaScript 代碼優化時出現問題。請參閱 perf 輸出問題 進一步了解。