使用 SPMonitoredScope

上次修改时间: 2013年1月16日

适用范围: SharePoint Foundation 2010

本文内容
何时使用 SPMonitoredScope
如何使用 SPMonitoredScope
计算的显示位置
SPMonitoredScope 的其他用法
性能注意事项
最佳做法
限制

在以前的 Windows SharePoint Services 版本中,在遇到未说明的性能或可靠性问题时,有时很难找出问题和确定其原因。通常,开发人员要花费大量时间来确定何处出现了故障和性能瓶颈。

Microsoft SharePoint Foundation 2010 引入了 SPMonitoredScope 类,开发人员使用该类可以指定代码的某些部分,这样,他们就可以监视统一日志记录服务 (ULS) 日志和开发人员仪表板中的使用情况统计信息。有关详细信息,请参阅使用开发人员仪表板

何时使用 SPMonitoredScope

开发人员可以使用 SPMonitoredScope 执行以下操作:

  • 确定资源过度使用情况。

  • 确定性能瓶颈。

  • 确定某些组件与其他组件的交互方式。

如何使用 SPMonitoredScope

SPMonitoredScope 类驻留在 Microsoft.SharePoint.Utilities 命名空间中。

SPMonitoredScope 使用起来很简单。开发人员只需"包装"要监视的代码段即可。然后,在执行代码时,系统会将测量的统计信息写入 ULS 日志及开发人员仪表板中。这样,开发人员和系统管理员便可立即使用有关组件以及组件所在页面的信息。

下面是包装代码的示例。

using (new SPMonitoredScope("My Scope Name"))
{
   doSomeWork(); 
}

计算的显示位置

在自定义代码中使用 SPMonitoredScope 时,系统会将统计信息写入 ULS 日志和开发人员仪表板中。

SPMonitoredScope 的其他用法

监视其他资源使用情况

SPMonitoredScope 还可通过指定代码段监测其他类型的资源使用情况。

例如,此代码示例可测量和记录执行时间、请求数以及外部标注执行的 SharePoint SQL Server 查询数(包括查询文本)。

using (new SPMonitoredScope("My Scope Name",TraceSeverity.Verbose,1000,
   new SPRequestUsageCounter(3),
   new SPSqlQueryCounter()))
{
    callExternalCode();
}

使用性能阈值

SPMonitoredScope 还可用来仅在检测到资源过度使用情形时进行动态跟踪。

在上述示例中,告知范围 callExternalCode() 方法的执行时间不应超过 1000ms,分配的请求数不能超过 3 个 SPRequest。如果超出这些限制,则该实例的此范围跟踪级别将提高至"高"。仪表板中的计数器也会显示为红色。

性能注意事项

使用 SPMonitoredScope 包装代码所产生的性能损失非常小。但应注意,如果由 SPMonitoredScope 包装的代码段包含执行大量迭代的循环(例如,遍历 SharePoint Foundation 2010 Web 服务返回的 XML 节点),则开发人员仪表板中包含的调用堆栈的大小可能呈指数级增加,这将导致很难解释所显示的信息。

最佳做法

有关以最佳方式高效使用 SPMonitoredScope 的提示:

  • 应使用 SPMonitoredScope 来包装对外部组件(如自定义数据库、外部 Web 服务等)进行的所有调用。这使得管理员能够轻松将这些组件识别为故障点,并快速找出问题。

限制

应注意,在使用 SPMonitoredScope 时存在一些限制。

  • 仅捕获对 SharePoint 数据库的调用。

  • 只有用 SPMonitoredScope 包装且位于前端 Web 服务器上的代码会出现在开发人员仪表板上。在应用程序服务器上执行的代码仅在运行该代码的计算机上的 ULS 日志中显示 SPMonitoredScope 信息。

请参阅

引用

SPMonitoredScope

概念

统一日志记录系统 (ULS) 日志记录概述