Diagnosing Transactional Applications
This topic describes how to use the Windows Communication Foundation (WCF) management and diagnostics feature to troubleshoot a transactional application.
Performance Counters
WCF provides a standard set of performance counters for you to measure your transactional application's performance. For more information, see Performance Counters.
Performance counters are scoped to three different levels: service, endpoint, and operation, as described in the following tables.
Service Performance Counters
Performance counter | Description |
---|---|
Transactions Flowed | The number of transactions that flowed to operations in this service. This counter is incremented any time a transaction is present in the message that is sent to the service. |
Transactions Flowed Per Second | The number of transactions that flowed to operations in this service within each second. This counter is incremented any time a transaction is present in the message that is sent to the service. |
Transacted Operations Committed | The number of transacted operations performed, whose transaction has completed with the outcome committed in this service. Work done under such operations is fully committed. Resources are updated in accordance with the work done in the operation. |
Transacted Operations Committed Per Second | The number of transacted operations performed, whose transaction has completed with the outcome committed in this service within each second. Work done under such operations is fully committed. Resources are updated in accordance with the work done in the operation. |
Transacted Operations Aborted | The number of transacted operations performed, whose transaction has completed with the outcome aborted in this service. Work done under such operations is rolled back. Resources are reverted to their previous state. |
Transacted Operations Aborted Per Second | The number of transacted operations performed, whose transaction has completed with the outcome aborted in this service within each second. Work done under such operations is rolled back. Resources are reverted to their previous state. |
Transacted Operations In Doubt | The number of transacted operations performed, whose transaction has completed with an outcome in doubt in this service. Work done with an outcome in doubt is in an indeterminate state. Resources are held pending outcome. |
Transacted Operations In Doubt Per Second | The number of transacted operations performed, whose transaction has completed with an outcome in doubt in this service within each second. Work done with an outcome in doubt is in an indeterminate state. Resources are held pending outcome. |
Endpoint Performance Counters
Performance counter | Description |
---|---|
Transactions Flowed | The number of transactions that flowed to operations at this endpoint. This counter is incremented any time a transaction is present in the message that is sent to the endpoint. |
Transactions Flowed Per Second | The number of transactions that flowed to operations at this endpoint within each second. This counter is incremented any time a transaction is present in the message that is sent to the endpoint. |
Operation Performance Counters
Performance counter | Description |
---|---|
Transactions Flowed | The number of transactions that flowed to operations at this endpoint. This counter is incremented any time a transaction is present in the message that is sent to the endpoint. |
Transactions Flowed Per Second | The number of transactions that flowed to operations at this endpoint within each second. This counter is incremented any time a transaction is present in the message that is sent to the endpoint. |
Windows Management Instrumentation
WCF exposes inspection data of a service at run time through a WCF Windows Management Instrumentation (WMI) provider. For more information about accessing WMI data, see Using Windows Management Instrumentation for Diagnostics.
A number of read-only WMI properties indicate the applied transaction settings for a service. The following tables list all of these settings.
On a service, the ServiceBehaviorAttribute
has the following properties.
Name | Type | Description |
---|---|---|
ReleaseServiceInstanceOnTransactionComplete | Boolean | Specifies whether the service object is recycled when the current transaction completes. |
TransactionAutoCompleteOnSessionClose | Boolean | Specifies whether pending transactions are completed when the current session closes. |
TransactionIsolationLevel | A string that contains a valid value of the IsolationLevel enumeration. | Specifies the transaction isolation level that this service supports. |
TransactionTimeout | DateTime | Specifies the period within which a transaction must complete. |
The ServiceTimeoutsBehavior
has the following property.
Name | Type | Description |
---|---|---|
TransactionTimeout | DateTime | Specifies the period within which a transaction must complete. |
On a binding, the TransactionFlowBindingElement
has the following properties.
Name | Type | Description |
---|---|---|
TransactionProtocol | A string that contains a valid value of the TransactionProtocol type. | Specifies the transaction protocol to use in flowing a transaction. |
TransactionFlow | Boolean | Specifies whether incoming transaction flow is enabled. |
On an operation, the OperationBehaviorAttribute
has the following properties:
Name | Type | Description |
---|---|---|
TransactionAutoComplete | Boolean | Specifies whether to automatically commit the current transaction if no unhandled exceptions occur. |
TransactionScopeRequired | Boolean | Specifies whether the operation requires a transaction. |
On an operation, the TransactionFlowAttribute
has the following properties.
Name | Type | Description |
---|---|---|
TransactionFlowOption | A string that contains a valid value of the TransactionFlowOption enumeration. | Specifies the extent to which transaction flow is required. |
Tracing
Traces enable you to monitor and analyze faults in your transactional applications. You can enable tracing using the following ways:
Standard WCF tracing
This type of tracing is the same as tracing any WCF application. For more information, see Configuring Tracing.
WS-AtomicTransaction tracing
WS-AtomicTransaction tracing can be enabled by using the WS-AtomicTransaction Configuration Utility (wsatConfig.exe). Such tracing provides insight into the state of transactions and participants within a system. To also enable internal Service Model tracing, you can set the
HKLM\SOFTWARE\Microsoft\WSAT\3.0\ServiceModelDiagnosticTracing
registry key to a valid value of the SourceLevels enumeration. You can enable message logging in the same way as other WCF applications.System.Transactions
tracingWhen using the OleTransactions protocol, protocol messages cannot be traced. The tracing support the System.Transactions infrastructure provides (which uses OleTransactions) allows users to view events that occurred to the transactions. To enable tracing for a System.Transactions application, include the following code in the
App.config
configuration file.<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>
This also enables WCF tracing, as WCF also utilizes the System.Transactions infrastructure.