我正在尝试在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
?此行中的数字在每次运行时都不同。
列total
,nonlib
,parent
是什么意思?我找不到文档。
答案 0 :(得分:2)
由于nodejs
中的node
(以前称为Ubuntu 12.10
)包现在预编译了V8
个分析选项,我们现在可以使用nodeTime的分析功能。
将require('nodetime').profile()
添加到您的节点。您不需要使用--prof
启动节点,它都在内部工作。
在tools
下,您会找到CPU profiler
。启动监听器并运行节点请求。
答案 1 :(得分:1)
我猜这个问题现在已经过时了。我也对分析我的节点应用程序感兴趣,但不再有--prof
切换(无论如何它似乎都得到原始信息)。
如果您使用Unix(例如Solaris),请查找dtrace
和flamegraph
。非常详细的分析。不幸的是,我无法使用它,因为我运行Linux(Ubuntu)并且原始dtrace
尚未正确移植。