6

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

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

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

stacks.out 保持空白,除了:CPU ID FUNCTION:NAME 1 387695 :tick-60s

有什么建议可能是错的吗?

4

3 回答 3

6

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

如果您想让它工作,您将需要使用具有更完整 DTrace 实现的操作系统。最好的办法是使用Illumos衍生产品之一(例如OmniOSSmartOSOpenIndiana)。

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

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

于 2012-06-26T19:29:41.643 回答
3

@psanford 有一个很好的答案,具体涉及您与 DTrace 的问题,但从您的开场白来看,您想要的是能够跟踪您的 Node.js 应用程序,而 DTrace 只是如何做到这一点的一个示例。

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

于 2012-06-26T20:49:31.167 回答
1

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

于 2013-09-09T16:53:37.463 回答