使用DTrace分析Node.js

我目前正在分析我的node.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

但是,当我在我的terminal运行这个命令时,我的节点应用程序正在运行:

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

除此之外,stacks.out保持空白:CPU IDfunction:名称1 387695:tick-60s

任何build议可能是错误的?

Linux DTrace的实现目前非常年轻,缺less一些重要的function(并没有任何准备用于生产)。 特别是您使用的DTrace实现(Paul Fox's)在支持用户空间跟踪方面做的工作并不多。 所以你不能在Linux下做这个(现在)。

如果你想使这个工作,你将需要使用一个更完整的DTrace的操作系统。 最好的办法是使用Illumos衍生产品之一(如OmniOS , SmartOS或OpenIndiana )。

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

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

@psanford具有一个很好的答案,特别是涉及到DTrace的问题,但是从您的开头句子来看,您希望能够跟踪Node.js应用程序,而DTrace只是一个示例。

在这种情况下, node-inspector和v8-profiler的组合将为您提供所需的自省应用程序。 我不确定它是否适用于Node 0.6.x,但是,从上次我使用0.4.10开始。

Oracle在Oracle Linux上宣布了 DTrace的可用性。 你可以在这里下载这个发行版。