トランザクション アプリケーションの診断
このトピックでは、トランザクションのアプリケーションをトラブルシューティングするために、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 のトレースも有効になります。