トランザクション
トランザクションは記録設定で設定します。VMグループまたはVMプールを編集すると、ウィザードで最初に表示されるステップにトランザクション設定が表示されます。

ネストされたVMグループにトランザクションが定義されていない場合、VMはトランザクションが定義されている最も近い祖先グループから設定を取得します。「すべてのJVM」設定には常に関連付けられたトランザクション定義があり、この階層内の検索では常に最後の成功した停止点となります。
ネストされたグループがトランザクション設定を上書きする場合、それらすべてを上書きし、親グループの設定とのマージはありません。親グループから選択した定義を再利用したい場合は、「セットを保存」ボタンでセットに保存し、「セットを追加」ボタンでネストされたグループの設定に含めます。

トランザクションのメソッドを選択する方法はトランザクションタイプに依存します。以下を参照してください。タイプに関係なく、各トランザクション定義にはオプションの命名スキームとオプションのポリシーがあります。メソッド呼び出しがインターセプトされると、jvmguardはトランザクション定義のリストをたどり、最初に一致したエントリの命名とポリシーを適用します。一致したエントリに「一致するトランザクションを破棄する」フラグが設定されている場合、その呼び出しは除外され、それ以上のマッチングは行われません。
トランザクションの名前は、命名要素のチェーンから構成されます。利用可能な命名要素のリストはトランザクションタイプに依存し、各タイプの高度なトピックで説明されています。
トランザクションタイプ
Section titled “トランザクションタイプ”通常、測定に重要なオペレーションにマッピングされるメソッドは、自分のコード内であれ、変更できないライブラリ内であれ、少数のセットです。jvmguardはこれらのケースに3つのトランザクションタイプを提供します。基本を超えて、設定には複雑な側面があるため、それぞれに高度なトピックの独自の章があります。
Declaredトランザクションは、jvmguardが提供するアノテーションを使ってコード内で定義されます。命名はそれらのアノテーションで完全に指定されますが、ポリシーはjvmguard UIで設定する必要があります。これは、複雑なトランザクションを定義する最も保守しやすい方法です。プロジェクトに追加する方法については、Declaredトランザクションに関する高度なトピックを参照してください。
Mappedトランザクションでは、特定のアノテーションクラス名を指定します。さらなる設定で、アノテーションをクラスとメソッドのどちらに適用するか、および継承されたクラスをどのように処理するかを決定できます。これは、フレームワークがすでにアノテーションを使用してエントリポイントを指定している場合に便利です。
監視対象のコードを変更できない場合、Matchedトランザクションを使用すると、Declaredトランザクションと同じすべてのインターセプションをjvmguard UIで直接指定できます。詳細については、Matchedトランザクションの詳細な説明を参照してください。
ネストされたトランザクション
Section titled “ネストされたトランザクション”トランザクションを定義する際の重要な考慮事項は、どのようなネストされたトランザクションを許可するかです。jvmguardは、同じ名前を持つ直接ネストされたトランザクションを記録しません。より制限的なオプションとして、次のネストされたトランザクションを防止できます。
- このエントリに一致するエントリ: ネストされたトランザクションがこのトランザクション定義に由来する場合、ネストされたトランザクションは作成されません。
- 同じグループ名のエントリ: このオプションを選択する場合、このトランザクション定義のグループ名を設定する必要があります。これは、複数のトランザクション定義が同じオペレーションの異なるエントリポイントであり、互いに呼び出し合う場合に便利です。
- 同じトランザクションタイプのエントリ: このオプションは、エントリポイントのみを表示し内部構造は表示したくない場合に適しています。同じタイプのネストされたトランザクションのツリーを防止するからです。
- それ以降のすべてのエントリ: このオプションは、現在のトランザクション定義からトランザクションが作成された場合に、あらゆる種類のネストされたトランザクションを防止します。
再入の抑制は、直接ネストされるトランザクションにのみ適用されます。ネストされたトランザクションが許可されている場合、その独自の再入抑制設定が次のネストレベルに使用されます。
コールツリーとホットスポット
Section titled “コールツリーとホットスポット”jvmguardは、記録されたすべてのトランザクションからコールツリーを構築します。コールツリーは、トランザクションがネストされるすべての異なるシーケンスをキャプチャする累積データ構造です。トランザクションCがトランザクションA内でもトランザクションB内でも呼び出される場合、コールツリーに2回出現し、1回はAの子として、1回はBの子として出現します。これらのシーケンスはそれぞれ何度も発生する可能性があり、コールツリー内の対応するパスに沿った呼び出し数を増加させます。

各トランザクションの数値(合計時間、呼び出し数、平均時間)は、選択した期間に対して表示されます。期間が完全に測定されていない場合、jvmguardはビューの上部にカバーされたパーセンテージを表示します。例えば、jvmguardサーバーを起動したとき、現在の1時間間隔は1時間が経過するまで完全には測定されません。同様に、jvmguardサーバーをしばらく停止すると、両側に不完全な間隔を持つ履歴の空白が残ります。
ホットスポットはコールツリーの逆転で、各トランザクションのすべての出現が合計され、そのバックトレースとともに表示されます。バックトレース内の呼び出し数と実行時間はトランザクションを参照するのではなく、このパスに沿ってホットスポットが呼び出された回数を参照します。
バックトレースに関する点を強調するため、単一のトップレベルノードではないすべてのホットスポットには、「累積バックトレース」という子ノードがあります。トランザクションの検索は、ビュー上部のフィルターバーで行います。

コールツリーとホットスポットビューで選択した間隔の時系列コンテキストを提供するため、現在の間隔がハイライトされたトランザクションタイムラインが下部に表示されます。このタイムラインを使用して、データポイントをクリックして別の間隔を選択することもできます。単一の選択したトランザクションのタイムラインを表示すると、合計トランザクションタイムラインが置き換えられ、テレメトリの右上隅にある「閉じる」ボタン[x]をクリックして復元できます。

トランザクション名が多すぎる場合
Section titled “トランザクション名が多すぎる場合”トランザクション定義が生成する個別のトランザクション名が多すぎる場合(例えば、命名スキームに呼び出しごとに異なる値が含まれている場合)、jvmguardはトランザクション名の最大数に上限を設け、この状態を修正する方法を説明した受信トレイメッセージを送信します。