Поделиться через


Использование SPMonitoredScope

Дата последнего изменения: 16 января 2013 г.

Применимо к: 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 в пользовательском коде статистика записывается в журналы и выводится на панель разработчика.

Другие способы использования SPMonitoredScope

Мониторинг использования других ресурсов

SPMonitoredScope также позволяет измерять использование ресурсов других типов в заданной части кода.

Например, в следующем примере кода измеряются и записываются в журнал время выполнения, количество запросов и количество запросов SharePoint SQL Server (включая текст запросов), выполненных внешним вызовом.

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

Использование порогов производительности

Класс SPMonitoredScope также может использоваться для динамического отслеживания только случаев чрезмерного использования ресурсов.

В приведенном выше примере для рассматриваемой области метод callExternalCode() не должен выполняться дольше 1000 мс и при этом он не должен выделять больше 3 запросов SPRequest. При превышении этих ограничений уровень трассировки для этой области и для этого конкретного экземпляра будет повышен до "высокого". Счетчик на панели разработчика также станет красным.

Вопросы производительности

Использование SPMonitoredScope для создания оболочки для кода незначительно влияет на производительность. Однако следует отметить, что если часть кода, заключенная в класс SPMonitoredScope, содержит цикл с большим количеством итераций (например, перебирая узлы XML, возвращаемые веб-службой SharePoint Foundation 2010), размер стека вызовов панели разработчика может расти экспоненциально, усложняя расшифровку отображаемых данных.

Рекомендации

Совет для оптимального и максимально эффективного использования класса SPMonitoredScope:

  • Все вызовы внешних компонентов, таких как пользовательские базы данных, внешние веб-службы и т. д., следует помещать внутрь класса SPMonitoredScope. Это упростит для администраторов проверку, не являются ли эти вызовы точками отказа, и позволит быстро локализовать проблему.

Ограничения

Следует отметить рад ограничений при использовании SPMonitoredScope.

  • Отслеживаются только вызовы к базам данных SharePoint.

  • На панели разработчика появляется только код, заключенный в класс SPMonitoredScope и находящийся на интерфейсном веб-сервере. Для кода, выполняемого на серверах приложений, выводится только данные SPMonitoredScope из журналов ULS компьютера, на котором выполняется код.

См. также

Ссылка

SPMonitoredScope

Концепции

Обзор ведения журналов в Единой системе ведения журналов (ULS)