诊断事务应用程序

本主题介绍如何使用 Windows Communication Foundation (WCF) 管理和诊断功能对事务应用程序进行故障排除。

性能计数器

WCF 提供一组标准性能计数器,用于测量事务应用程序的性能。 有关详细信息,请参阅 性能计时器

性能计数器的范围限定为三个不同的级别:服务、终结点和操作,如下表所述。

服务性能计数器

性能计数器 DESCRIPTION
Transactions Flowed(流动的事务数) 流向此服务中的操作的事务数。 每当发送到服务的消息中存在事务时,此计数器即会递增。
每秒事务流数 每秒钟流向此服务中的操作的事务数。 每当发送到服务的消息中存在事务时,此计数器即会递增。
Transacted Operations Committed(已提交的事务处理操作次数) 此服务中执行的事务处理操作数,这些操作的事务已完成,结果已提交。 这些操作下完成的工作已完全提交。 根据操作中完成的工作更新资源。
Transacted Operations Committed Per Second(每秒提交的事务处理操作次数) 此服务中每秒执行的事务处理操作数,这些操作的事务已完成,结果已提交。 这些操作下完成的工作已完全提交。 根据操作中完成的工作更新资源。
Transacted Operations Aborted(已中止的事务处理操作次数) 此服务中执行的事务处理操作数,这些操作的事务已完成,结果已中止。 这些操作下完成的工作已回滚。 资源还原到其以前的状态。
Transacted Operations Aborted Per Second(每秒中止的事务处理操作次数) 此服务中每秒执行的事务处理操作数,这些操作的事务已完成,结果已中止。 这些操作下完成的工作已回滚。 资源还原到其以前的状态。
Transacted Operations In Doubt(不确定的事务处理操作次数) 此服务中执行的事务处理操作数,这些操作的事务已完成,结果不确定。 结果不确定的工作处于未确定状态。 资源保留在挂起的结果中。
Transacted Operations In Doubt Per Second(每秒不确定的事务处理操作次数) 此服务中每秒执行的事务处理操作数,这些操作的事务已完成,结果不确定。 结果不确定的工作处于未确定状态。 资源保留在挂起的结果中。

终结点性能计数器

性能计数器 DESCRIPTION
Transactions Flowed(流动的事务数) 流向此终结点上的操作的事务数。 每当发送到终结点的消息中存在事务时,此计数器即会递增。
每秒事务流数 每秒钟流向此终结点上的操作的事务数。 每当发送到终结点的消息中存在事务时,此计数器即会递增。

操作性能计数器

性能计数器 DESCRIPTION
Transactions Flowed(流动的事务数) 流向此终结点上的操作的事务数。 每当发送到终结点的消息中存在事务时,此计数器即会递增。
每秒事务流数 每秒钟流向此终结点上的操作的事务数。 每当发送到终结点的消息中存在事务时,此计数器即会递增。

Windows管理工具

WCF 通过一个 WCF Windows Management Instrumentation (WMI) 提供程序在运行时公开服务的检测数据。 有关访问 WMI 数据的详细信息,请参阅使用 Windows Management Instrumentation 进行诊断

很多 WMI 只读属性都指示为服务应用的事务设置。 下表列出了所有这些设置。

在服务中,ServiceBehaviorAttribute 具有以下属性。

名称 类型 DESCRIPTION
ReleaseServiceInstanceOnTransactionComplete 布尔型 指定在当前事务完成时是否回收服务对象。
TransactionAutoCompleteOnSessionClose 布尔型 指定当前会话关闭时,挂起的事务是否已完成。
事务隔离级别 (TransactionIsolationLevel) 包含 IsolationLevel 枚举中有效值的字符串。 指定此服务支持的事务隔离级别。
TransactionTimeout DateTime 指定事务必须在其内完成的时间段。

以下是 ServiceTimeoutsBehavior 的属性。

名称 类型 DESCRIPTION
TransactionTimeout DateTime 指定事务必须在其内完成的时间段。

在绑定上,TransactionFlowBindingElement 具有以下属性。

名称 类型 DESCRIPTION
TransactionProtocol 包含TransactionProtocol类型的有效值的字符串。 指定在流动事务时使用的事务处理协议。
TransactionFlow 布尔型 指定是否启用传入事务流。

在操作上,OperationBehaviorAttribute 具有以下属性。

名称 类型 DESCRIPTION
交易自动完成 布尔型 指定如果未发生未经处理的异常,是否自动提交当前事务。
TransactionScopeRequired 布尔型 指定操作是否需要事务。

在操作中,TransactionFlowAttribute 具有以下属性。

名称 类型 DESCRIPTION
TransactionFlowOption 包含 TransactionFlowOption 枚举中有效值的字符串。 指定需要事务流的范围。

追踪

利用跟踪记录,可以监视和分析事务应用程序中的故障。 可以使用以下方法启用跟踪:

  • 标准 WCF 跟踪

    这种类型的跟踪与跟踪任何 WCF 应用程序相同。 有关详细信息,请参阅 配置跟踪

  • WS-AtomicTransaction 跟踪

    可以通过使用 WS-AtomicTransaction 配置工具 (wsatConfig.exe) 启用 WS-AtomicTransaction 跟踪。 此类跟踪提供对系统中事务和参与者状态的见解。 若还要启用内部服务模块跟踪,可以将 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>  
    

    这也支持 WCF 跟踪,因为 WCF 也利用 System.Transactions 基础结构。

另请参阅