2011-11-22 42 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