このページでは、Node.js Agentによって作成されるトランザクション スナップショットとプロセススナップショットの関係について説明します。
V8サンプラー
Node.jsは、コードサンプラーを含むV8 JavaScriptエンジンで構築されています。
Node.js Agentは、V8 サンプラーを使用して、Node.js プロセスのコールスタック上にあるメソッドのコールグラフを含むプロセス全体のプロセススナップショットを作成します。
スナップショットのコールグラフデータ
コールグラフデータは、ビジネス トランザクション スナップショットおよびプロセススナップショットに表示されます。
ビジネストランザクションスナップショットを表示すると現れるコールグラフは、そのトランザクションインスタンスに特有のもので、同時に行われるプロセススナップショットのコールグラフから派生しています。
プロセススナップショットを表示すると、プロセススナップショットがキャプチャされている間に実行中のすべてのビジネストランザクションの完全なコールグラフを確認できます。
ビジネストランザクションスナップショットのコールグラフには、特定のビジネストランザクションに起因するメソッドだけを表示するようにフィルタリングした、並行プロセススナップショットからのデータが表示されます。これは、並行プロセススナップショットコールグラフのサブセットです。
このため、ビジネストランザクションコールグラフのメソッド実行時間は、並行プロセススナップショットコールグラフの同じメソッドの実行時間よりも短い場合があります。これは、そのメソッドへの呼び出しがトランザクションスナップショットによりキャプチャされたビジネストランザクションインスタンスのコンテキスト以外で行われたことを示します。
トランザクションスナップショットの概要タブには、トランザクションスナップショットの対象期間中に取得されたプロセススナップショットへのリンクが含まれています。
ビジネストランザクションによりトリガーされるプロセススナップショット
現在のプロセスで既存のプロセススナップショットが進行中でない場合、定期的収集または診断セッションによりトリガーされるビジネス トランザクション スナップショットが開始されるたびに、エージェントが 10 秒間のプロセススナップショットを開始します。これは、ビジネス トランザクション スナップショットに関連するコールグラフデータを提供するためです。プロセススナップショットが重複することはありません。定期的収集とは、定期的な間隔でビジネストランザクションを収集することを意味します。間隔はデフォルトで 10 分ですが、構成することも可能です。診断セッションとは、パフォーマンスの問題の可能性があるパターンを検出したためエージェントによりトランザクション スナップショットのキャプチャが自動的に開始すること、あるいは同じ理由で手動により診断セッションを開始することです。
並行ビジネストランザクションとプロセススナップショット
表示される結果は、ビジネストランザクションと同時に実行されるプロセススナップショットです。2つのスナップショットがどの程度並ぶかは、トランザクションおよびプロセススナップショットの相対的な継続時間と開始時間によります。
下図のシナリオでは、青色で示される 5 秒間のトランザクションコールのすべてと、緑色で示される 10 秒間のトランザクションコールのほとんどが 10 秒間のプロセススナップショットによりキャプチャされますが、オレンジ色の 14 秒間のトランザクション スナップショットのコールは約半分となります。

ビジネストランザクションがプロセススナップショットより長く実行される場合は、require ステートメントの autoSnapshotDurationSeconds
設定で、プロセススナップショットのデフォルト時間を増加できます。