我目前正在分析我的node.js应用程序,我找到了这个博客:http://blog.nodejs.org/2012/04/25/profiling-node-js/,它建议我应该使用Dtrace。我使用这里给出的步骤在ubuntu12.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
有什么建议可能出了什么问题吗?
发布于 2012-06-27 03:29:42
Linux的DTrace实现目前非常年轻,缺少许多重要的特性(而且还没有以任何方式准备好投入生产使用)。具体地说,您正在使用的DTrace实现(Paul Fox的)并没有做太多的工作来支持用户空间跟踪。因此,您将无法在Linux下执行此操作(现在)。
如果你想让它工作,你需要使用一个拥有更完整的DTrace实现的操作系统。最好的办法是使用一种Illumos衍生工具(如OmniOS、SmartOS或OpenIndiana)。
您应该重新阅读the article you linked to的“先决条件”部分。它指出,您还需要确保您使用的32位NodeJS在编译时打开了DTrace支持。
(Mac确实有一个很好的DTrace实现,但根据the article的说法,它不支持本例所需的ustack helper。)
发布于 2012-06-27 04:49:31
@psanford有一个很好的答案,特别是涉及你的DTrace问题,但从你的开场白看,你想要的是能够跟踪你的Node.js应用程序,DTrace只是如何做到这一点的一个例子。
在这种情况下,node-inspector和v8-profiler的组合将为您的应用程序提供所需的内省。然而,我不确定它是否适用于Node 0.6.x,因为我最后一次使用它是在0.4.10。
https://stackoverflow.com/questions/11205375
复制相似问题