性能分析节点.js使用 DTrace

Profiling Node.js using DTrace

本文关键字:使用 DTrace js 节点 性能      更新时间:2023-09-26

我目前正在分析我的节点.js应用程序。我发现了这个博客:http://blog.nodejs.org/2012/04/25/profiling-node-js/建议我应该使用Dtrace。我使用此处给出的步骤在 ubuntu 12.04 上安装了 dtrace:https://askubuntu.com/questions/60940/how-do-i-install-dtrace

但是,当我在节点应用程序运行时在终端中运行此命令时:

dtrace -o stacks.out -n 'profile-97/execname == "node" && arg1/{
@[jstack(100, 8000)] = count(); } tick-60s { exit(0); }'

stacks.out 保持空白,除了:CPU ID 功能:名称 1 387695:tick-60s

任何建议可能出了什么问题?

Linux DTrace 实现目前还很年轻,缺少许多重要功能(并且尚未准备好用于生产)。具体来说,您正在使用的 DTrace 实现(Paul Fox 的)没有做太多工作来支持用户空间跟踪。因此,您将无法在Linux下执行此操作(现在)。

如果要使其正常工作,则需要使用具有更完整 DTrace 实现的操作系统。最好的选择是使用Illumos衍生产品之一(如OmniOS,SmartOS或OpenIndiana)。

您应该重新阅读您链接到的文章的"先决条件"部分。它指出您还需要确保在编译时启用 DTrace 支持的 32 位 NodeJS。

(Mac OS X 确实有一个很好的 DTrace 实现,但根据文章,它不支持此示例所需的 ustack 帮助程序。

@psanford有一个很好的答案,专门涉及您的 DTrace 问题,但从您的开头句子来看,您似乎想要能够跟踪您的 Node.js 应用程序,而 DTrace 只是如何做到这一点的一个例子。

在这种情况下,节点检查器和 v8 探查器的组合将为您提供所需的应用程序自省。我不确定它是否适用于 Node 0.6.x,但是,因为我上次使用它是在 0.4.10 上

Oracle

宣布在 Oracle Linux 上提供 DTrace。您可以在此处下载此发行版。