使用v8分析nodejs

时间:2013-03-21 14:18:37

标签: node.js profiling v8

我有一个节点应用程序,我想使用节点分析器进行分析。

首先我跑了:

node --prof v8test.js

然后,我下载了v8工具

svn checkout http://v8.googlecode.com/svn/trunk/ v8;
make dependencies;
make native;

然后尝试分析创建的文件(v8.log)

tools/linux-tick-processor ../v8.log

但我得到了很多:

Code move event for unknown code: 0x289dd8475560
Code move event for unknown code: 0x289dd84758e0
Code move event for unknown code: 0x289dd8479280
Code move event for unknown code: 0x289dd8482980
Code move event for unknown code: 0x289dd84c2a80
line 718730: unknown code state: undefined
line 718731: unknown code state: undefined
line 739575: unknown code state: undefined
line 739577: unknown code state: undefined

有人可以帮我弄清楚发生了什么吗?

3 个答案:

答案 0 :(得分:7)

日志文件格式似乎经常发生变化,因此您需要确保使用的是正确版本的v8。例如,如果使用节点v0.10.18生成配置文件日志,则必须使用v8版本3.14.5的tick处理器对其进行分析。要找出构建给定版本节点的v8版本,可以在节点源代码分发中检查deps/v8/ChangeLog(节点自身的更改日志在这方面似乎有点不可靠)。

答案 1 :(得分:0)

确保您没有使用32位版本的性能分析工具运行64位版本的节点,反之亦然。当我偶然做到这一点时,我遇到了类似的问题。

答案 2 :(得分:0)

分析节点应用程序的另一个选项是使用VTune Amplifier而不是嵌入在Node.js中的内部V8分析器。在这种情况下,您将看到性能指标是如何通过函数的源代码分发的。 V8配置文件现在无法做到这一点。看看这个post,看看你是怎么做到的。