我目前正在分析我的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功能:名称 1 387695:tick-60s
有什么建议可能出错吗?
答案 0 :(得分:7)
Linux DTrace实现目前非常年轻,缺少许多重要功能(并且无法以任何方式准备用于生产)。具体而言,您正在使用的DTrace实现(Paul Fox)在支持用户空间跟踪方面做得不多。因此,您无法在Linux(目前)下执行此操作。
如果要使其工作,则需要使用具有更完整DTrace实现的操作系统。您最好的选择是使用其中一个Illumos衍生产品(例如OmniOS,SmartOS或OpenIndiana)。
您应该重新阅读the article you linked to的“先决条件”部分。它声明您还需要确保在编译时使用32位NodeJS并启用DTrace支持。
(Mac OS X确实有一个很好的DTrace实现,但根据the article,它不支持此示例所需的ustack助手。)
答案 1 :(得分:3)
@psanford有一个很好的答案专门涉及你的DTrace问题,但从你的开头句子看起来你想要的是能够跟踪你的Node.js应用程序,而DTrace是只是一个如何做的例子。
在这种情况下,node-inspector和v8-profiler的组合可以为您的应用程序提供所需的内省。我不确定它是否适用于Node 0.6.x,但是,因为我上次使用它时是0.4.10。
答案 2 :(得分:1)