使用 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 输出问题。