2011-11-22 128 views
3

我正在尝试使用Node.js的--prof选项。所以我在linux-tick-processor后得到如下报告:了解v8/Node.js分析报告

[Shared libraries]: 
    ticks total nonlib name 
    20736 94.8% 0.0% b78a5000-b78a6000 
    574 2.6% 0.0% /usr/lib/libv8.so.3.4.14.21 
    117 0.5% 0.0% /usr/bin/node 
    62 0.3% 0.0% /lib/i386-linux-gnu/i686/cmov/libc-2.13.so 
     1 0.0% 0.0% /lib/i386-linux-gnu/ld-2.13.so 

[JavaScript]: 
    ticks total nonlib name 
     3 0.0% 0.8% Stub: StringAddStub 
     3 0.0% 0.8% Builtin: A builtin from the snapshot {1} 

... 

    ticks parent name 
    20736 94.8% b78a5000-b78a6000 

    574 2.6% /usr/lib/libv8.so.3.4.14.21 
    94 16.4% Function: ~QueryCommand.toBinary /storage/hoc/nodejs/lib/mongodb/commands/query_command.js:37 
    94 100.0%  Function: ~Connection.send /storage/hoc/nodejs/lib/mongodb/connection.js:353 
    94 100.0%  Function: ~Db.executeCommand /storage/hoc/nodejs/lib/mongodb/db.js:629 

... 

什么是b78a5000-b78a6000?这一行中的数字在每次运行中都不相同。

什么是列total, nonlib,parent是什么意思?我无法找到它的文档。

+1

b78a5000-b78a6000是VDSO。 linux-tick-processor并不喜欢它。 –

回答

2

由于nodejs(以前node)封装在Ubuntu 12.10现在与V8分析选项预编译的,我们现在可以使用的nodeTime的分析功能。

require('nodetime').profile()添加到您的节点。您不需要使用--prof开始节点,它全部在内部工作。

tools下你会找到CPU profiler。启动监听器并运行节点请求。

enter image description here

+0

自从appdynamics购买它后,nodeTime的链接现在更多地是一则广告。 – migg

2

我猜这个问题现在已经过时了。我也对分析我的节点应用程序感兴趣,但不再有--prof开关(无论如何,它似乎都能得到粗略的信息)。

如果您使用Unix(如Solaris),请查找dtraceflamegraph。非常详细的分析。不幸的是,我不能使用它,因为我运行的是Linux(Ubuntu),原来的dtrace还没有正确移植。

+0

感谢您的通知。我也在使用Linux,问题没有解决(由于性能,项目仍然冻结)。它认为应该有另一种解决方案。另外,我尝试了'nanotime'进行分析。足以确定问题在我的代码之外。 –

+0

有一个'--prof'开关。它是'--v8-options'的一部分。 – 2013-01-23 00:10:38

+0

现在有。直到'12.10'之前,它不是'Ubuntu'中的预编译二进制文件的一部分。 – Redsandro