了解v8 / Node.js分析报告

时间:2011-11-22 07:59:30

标签: node.js profiling v8

我正在尝试在Node.js中使用--prof选项。所以我在linux-tick-processor后得到以下报告:

 [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?此行中的数字在每次运行时都不同。

totalnonlibparent是什么意思?我找不到文档。

2 个答案:

答案 0 :(得分:2)

由于nodejs中的node(以前称为Ubuntu 12.10)包现在预编译了V8个分析选项,我们现在可以使用nodeTime的分析功能。

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

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

enter image description here

答案 1 :(得分:1)

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

如果您使用Unix(例如Solaris),请查找dtraceflamegraph。非常详细的分析。不幸的是,我无法使用它,因为我运行Linux(Ubuntu)并且原始dtrace尚未正确移植。