APMインサイト Node.jsエージェントはNode.js Chrome V8から重要なメトリックデータを収集します。これらメトリックにより、Node.js VMのふるまいを分析し、アプリケーションパフォーマンスの向上に繋げられます。さらに、エージェントはCPUメトリックを収集し、そのガベージコレクション(GC)メトリックを使用して分析を行えます。
Node.jsでは、追加のネイティブモジュールを使用して、ガベージコレクションとイベントループデータに関連するNode.js VMメトリックの時間ごとのデータを収集します。メモリとCPU使用率はネイティブモジュールの有無に関わらず収集されます。
node-gypパッケージの手順を参照して、デプロイプラットフォームにネイティブモジュールをコンパイルします。
プラットフォーム | 推奨Pythonバージョン | 環境 |
Unix/Linux | v3.7、v3.8、v3.9、v3.10 | Make, C/C++コンパイラ(GCCなど) |
macOS | v3.7、v3.8、v3.9、v3.10 | Xcodeコマンドラインツール |
Windows | v3.7、v3.8、v3.9、v3.10 | ビジュアルC++ビルド環境 |
ランタイムデータを取得して、NVMメトリックでアプリケーションの正常性を監視と、パフォーマンス問題のトラブルシュートを行います。
NVMメトリックの表示方法:
グラフやメトリックが表示され、パフォーマンス問題のトラブルシュートに役立てられます。
例:
画面右上で、メトリックの表示したい期間を選択します。
GC停止時間
GCでかかった時間です。基本的に、GC時間のスパイクが発生した場合はなにかしらの問題があります。
GC停止頻度
1分ごとに操作されたGCの実行数です。
メモリ使用量
Node.jsプロセスで消費されたメモリ量です。
パラメーター | 説明 |
非ヒープ (MB) | V8のヒープ外のデータ用に予約されたメモリです(例:バッファーやソケット)。 |
空き (MB) | メモリプール用にV8によって確保されるメモリの量です。このメモリは通常は使用されませんが、V8が必要に応じて自由に割り当てるために予約されています。 |
使用済み (MB) | V8が使用したメモリ量です(例:JavaScriptオブジェクト)。 |
CPU使用率
Node.jsプロセスのCPU使用率を表示します。
パラメーター | 説明 |
ユーザー (%) | ユーザーコードの実行時間を実際の時間と割った値です。 |
システム (%) | Node.jsプロセスに代わってシステムカーネルで使用された時間を実時間で割った値。 |
1分毎のイベントループTick
1分毎のイベントループTick数を表示します。Tickは、実行準備ができている関数が実行される1つのイベントループターンです。
Tickごとの最大CPU時間
1つのTickに要した最大時間です。これにより、異常な長期のイベントループTickを特定し、同期コード実行の拡張に繋げられます。