次の方法で共有


トランザクション アプリケーションの診断

このトピックでは、トランザクションのアプリケーションをトラブルシューティングするために、Windows Communication Foundation (WCF) に用意されている管理および診断機能の使用方法について説明します。

パフォーマンス カウンター

WCF には、トランザクション アプリケーションのパフォーマンスを測定するための、標準のパフォーマンス カウンターが用意されています。 これらのパフォーマンス カウンターの詳細については、「 パフォーマンス カウンター」を参照してください。

パフォーマンス カウンターには次の表に示すように、サービス、エンドポイント、操作の 3 つのレベルがあります。

サービス パフォーマンス カウンター

パフォーマンス カウンター 説明
トランザクション フロー このサービスで操作に対して実行されたトランザクションの数です。 このカウンターは、サービスに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。
1 秒あたりのトランザクション フロー このサービスの操作に対して実行された 1 秒あたりのトランザクションの数です。 このカウンターは、サービスに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。
コミットされたトランザクション操作 このサービスで、結果がコミットされた状態で完了したトランザクション操作の数です。 そのような操作中に実行された作業は完全にコミットされました。 リソースは、操作で実行された作業に応じて更新されます。
1 秒あたりのコミットされたトランザクション操作 このサービスで、結果がコミットされた状態で完了したトランザクション操作の 1 秒あたりの数です。 そのような操作中に実行された作業は完全にコミットされました。 リソースは、操作で実行された作業に応じて更新されます。
中止されたトランザクション操作 このサービスで、結果が中止された状態で完了したトランザクション操作の数です。 そのような操作中に実行された作業はロールバックされました。 リソースは、それぞれの直前の状態に復元されました。
1 秒あたりの中止されたトランザクション操作 このサービスで、結果が中止された状態で完了したトランザクション操作の 1 秒あたりの数です。 そのような操作中に実行された作業はロールバックされました。 リソースは、それぞれの直前の状態に復元されました。
不明なトランザクション操作 このサービスで、結果が不明な状態で完了したトランザクション操作の数です。 結果が不明な作業は中間状態になります。 リソースは、保留中となります。
1 秒あたりの不明なトランザクション操作 このサービスで、結果が不明な状態で完了したトランザクション操作の 1 秒あたりの数です。 結果が不明な作業は中間状態になります。 リソースは、保留中となります。

エンドポイントのパフォーマンス カウンター

パフォーマンス カウンター 説明
トランザクション フロー このエンドポイントでの操作に対して実行されたトランザクションの数。 このカウンターは、エンドポイントに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。
1 秒あたりのトランザクション フロー 毎秒ごとにこのエンドポイントでの操作に対して実行されたトランザクションの数。 このカウンターは、エンドポイントに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。

操作パフォーマンス カウンター

パフォーマンス カウンター 説明
トランザクション フロー このエンドポイントでの操作に対して実行されたトランザクションの数。 このカウンターは、エンドポイントに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。
1 秒あたりのトランザクション フロー 毎秒ごとにこのエンドポイントでの操作に対して実行されたトランザクションの数。 このカウンターは、エンドポイントに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。

Windows Management Instrumentation (Windows Management Instrumentation)

WCF では、WCF WMI (Windows Management Instrumentation) プロバイダーを介して実行時のサービスの検査データが公開されます。 WMI データへのアクセスの詳細については、「診断用の WMI (Windows Management Instrumentation) の使用」を参照してください。

WMI プロパティには、サービスに適用されるトランザクション設定を示す読み取り専用のプロパティが多数あります。 次の表にこれらの設定をすべて示します。

サービスの ServiceBehaviorAttribute には、次のプロパティがあります。

名前 種類 説明
ReleaseServiceInstanceOnTransactionComplete ブール値 現在のトランザクションの完了時に、サービス オブジェクトをリサイクルするかどうかを指定します。
TransactionAutoCompleteOnSessionClose ブール値 現在のセッションの終了時に、保留中のトランザクションを完了するかどうかを指定します。
TransactionIsolationLevel IsolationLevel 列挙体の有効な値を含む文字列。 このサービスがサポートするトランザクションの分離レベルを指定します。
TransactionTimeout DateTime トランザクションを完了しなければならない期間を指定します。

ServiceTimeoutsBehavior には、次のプロパティがあります。

名前 種類 説明
TransactionTimeout DateTime トランザクションを完了しなければならない期間を指定します。

バインディングの TransactionFlowBindingElement には、次のプロパティがあります。

名前 種類 説明
TransactionProtocol TransactionProtocol 型の有効な値を含む文字列。 トランザクションをフローさせるために使用するトランザクション プロトコルを指定します。
TransactionFlow ブール値 受信トランザクション フローを有効にするかどうかを指定します。

操作の OperationBehaviorAttribute には、次のプロパティがあります。

名前 種類 説明
TransactionAutoComplete ブール値 未処理の例外が発生しなかった場合に、現在のトランザクションを自動的にコミットするかどうかを指定します。
TransactionScopeRequired ブール値 操作がトランザクションを必要とするかどうかを指定します。

操作の TransactionFlowAttribute には、次のプロパティがあります。

名前 種類 説明
TransactionFlowOption TransactionFlowOption 列挙体の有効な値を含む文字列。 トランザクション フローが要求される範囲を指定します。

トレース

トレースを使用すると、トランザクション アプリケーションにおけるエラーを監視および分析できます。 トレースは次の方法を使用して有効にできます。

  • 標準 WCF トレース

    このトレースは、通常の WCF アプリケーションのトレースと同じものです。 詳細については、「 Configuring Tracing」を参照してください。

  • WS-AtomicTransaction トレース

    WS-AtomicTransaction トレースは、WS-AtomicTransaction 構成ユーティリティ (wsatConfig.exe) を使用して有効にすることができます。 このトレースでは、トランザクションの状態とシステム内の参加要素を把握できます。 内部のサービス モデル トレースも有効にするには、HKLM\SOFTWARE\Microsoft\WSAT\3.0\ServiceModelDiagnosticTracing レジストリ キーを SourceLevels 列挙体の有効な値に設定します。 メッセージ ログは、他の WCF アプリケーションと同じ方法で有効にできます。

  • System.Transactions トレース

    OleTransactions プロトコルを使用する場合、プロトコル メッセージはトレースできません。 System.Transactions インフラストラクチャではトレースがサポートされるため (OleTransactions を使用)、ユーザーはトランザクションで発生したイベントを確認できます。 System.Transactions アプリケーションのトレースを有効にするには、App.config 構成ファイルに次のコードを含めます。

    <configuration>  
      <system.diagnostics>  
         <sources>  
            <source name="System.Transactions" switchValue="Verbose, ActivityTracing">  
               <listeners>  
                  <add name="Text"  
                     type="System.Diagnostics.XmlWriterTraceListener"  
                     initializeData="SysTx.log"  
                     traceOutputOptions="Callstack" />  
               </listeners>  
            </source>  
         </sources>  
         <trace autoflush="true" indentsize="4">  
         </trace>  
      </system.diagnostics>  
    </configuration>  
    

    System.Transactions インフラストラクチャは WCF でも使用されるので、これにより WCF のトレースも有効になります。

関連項目