2017-09-06 4 views
1

Node.jsを使用しています8.3。私はnode --prof server.jsを使用して私のアプリをプロファイルします。 xxxx -v8.logのような名前のファイルがあります。MacでNode.jsプロファイルファイルを分析するには?

https://www.npmjs.com/package/node-tick-processorhttps://github.com/sidorares/node-tickを使ってファイルを解析しようとしました。私はCPUプロファイルを見ることに興味があります。

しかし、出力が非常に参考にされていない、このようなものです:

[Bottom up (heavy) profile]: 
    Note: percentage shows a share of a particular caller in the total 
    amount of its parent calls. 
    Callers occupying less than 2.0% are not shown. 

    ticks parent name 
    65591 59.5% /usr/lib/system/libsystem_kernel.dylib 
    42621 65.0% /usr/local/bin/node 

    16632 15.1% /usr/local/bin/node 
    5544 33.3% /usr/local/bin/node 

    5888 5.3% /usr/lib/system/libsystem_c.dylib 
    5875 99.8% /usr/local/bin/node 

    2702 2.4% /usr/lib/system/libsystem_pthread.dylib 
    2284 84.5% /usr/local/bin/node 


[Top down (heavy) profile]: 
    Note: callees occupying less than 0.1% are not shown. 

    inclusive  self   name 
    ticks total ticks total 
    68106 61.7% 11088 10.1% /usr/local/bin/node 
    42617 38.6% 42617 38.6% /usr/lib/system/libsystem_kernel.dylib 
    5875 5.3% 5875 5.3% /usr/lib/system/libsystem_c.dylib 
    5548 5.0% 5538 5.0% /usr/local/bin/node 
    2284 2.1% 2284 2.1% /usr/lib/system/libsystem_pthread.dylib 
    337 0.3% 337 0.3% /usr/lib/system/libsystem_platform.dylib 
    303 0.3% 303 0.3% /usr/lib/system/libsystem_malloc.dylib 

    22970 20.8% 22970 20.8% /usr/lib/system/libsystem_kernel.dylib 

    418 0.4% 418 0.4% /usr/lib/system/libsystem_pthread.dylib 

は、出力ファイルを分析するための他のツールはありますか?私はボトルネック機能を示すものを見たり、少なくとも私の行番号を見つけたいと思っています。私はv8-profilerを試して、その出力ファイルをChromeの開発ツールに読み込む必要があります。しかし、フォーマットは異なって見えます。 -v8.logファイルを解析できるかどうかはわかりません。

答えて

0

ツールの使用にはまったく問題はありません。ここで問題となっているのは、named JS機能からのCPU消費の寄与が大きすぎるために、非常に小さいことです。

var x = 10; 
function foo() { 
    while (true) { 
    x++; 
    } 
} 
foo(); 

をそして、それは教授の出力です:

は私のコードを考えてみましょう(。0.1%未満を占める呼び出し先が示されていない)プロフィール出力の警告に注意してください。ご覧のように、スクリプト、関数、行#が優勢なCPUの候補として表示されます。

[Unknown]: 
    ticks total nonlib name 
    13 0.3% 

[Shared libraries]: 
    ticks total nonlib name 
    57 1.3% 0.0% /usr/local/bin/node 
     6 0.1% 0.0% /usr/lib/system/libsystem_kernel.dylib 
     2 0.0% 0.0% /usr/lib/system/libsystem_platform.dylib 
     1 0.0% 0.0% /usr/lib/system/libsystem_pthread.dylib 
     1 0.0% 0.0% /usr/lib/system/libsystem_c.dylib 

[JavaScript]: 
    ticks total nonlib name 
    4177 98.1% 99.7% LazyCompile: *foo /Users/gireesh/a.js:2:13 
     1 0.0% 0.0% Stub: BinaryOpWithAllocationSiteStub 

[C++]: 
    ticks total nonlib name 

[GC]: 
    ticks total nonlib name 
     2 0.0% 

[Bottom up (heavy) profile]: 
    Note: percentage shows a share of a particular caller in the total 
    amount of its parent calls. 
    Callers occupying less than 2.0% are not shown. 

    ticks parent name 
    4177 98.1% LazyCompile: *foo /Users/gireesh/a.js:2:13 
    4177 100.0% LazyCompile: *foo /Users/gireesh/a.js:2:13 
    4177 100.0%  Function: ~<anonymous> /Users/gireesh/a.js:1:11 
    4177 100.0%  Function: ~Module._compile module.js:526:37 
    4177 100.0%   Function: ~Module._extensions..js module.js:578:37 
    4177 100.0%   Function: ~Module.load module.js:494:33 

これが役に立ちます。

+0

プロフィールに基づいてアプリの掲載結果を改善することはできませんか?私はNodeの専門家ではない。このCPU使用率は、おそらく、V8エンジンに直接アクセスできるNode.jsメソッドを使用する上で不適切なことを行うことによって引き起こされる可能性があります。私は今諦めている。この段階で私のアプリを改善する方法を見ることができません。 – newguy

+0

あまりにも早く放棄しないでください!ティックプロセッサーに '-j'フラグを使い、JSプロファイルがハイライト表示され、VM、コンパイラー、その他のランタイム状態が破棄されていることを確認してください。 –

+0

ありがとうございますが、 'node-tick-processor'や 'node-tick'に' -j'オプションがありません。正しく使用する方法がわかりません。また、変更する必要がある機能がCPUの0.1%未満を占めている場合は、それを改善し続けることは意味がありません。実際の犯人を私の目の前から隠しているトリックがない限り。 – newguy

関連する問題