Ограничения на использование ресурсов для изолированных решений
Дата последнего изменения: 9 марта 2015 г.
Применимо к: SharePoint Foundation 2010
В этой статье
Три типа ограничений на использование ресурсов
Измеряемые ресурсы
Важные API-интерфейсы использования ресурсов
Доступно на сайте SharePoint Online
В этом разделе рассматриваются ограничения на использование системных ресурсов, накладываемые Microsoft SharePoint Foundation на для песочницы.
Три типа ограничений на использование ресурсов
На изолированные решения накладываются три типа ограничений на использование ресурсов, которые можно разбить на следующие категории: 1) по типу объекта, к которому применяется ограничение; 2) по типу объекта, на который накладывается штраф при нарушении ограничения. Штрафы накладываются автоматически инфраструктурой мониторинга решений SharePoint Foundation. Администраторы фермы также могут вручную заблокировать любой объект для песочницы в приложении центра администрирования по любой причине.
По запросу, со штрафом запроса: существует жесткое ограничение на время выполнения для песочницы. По умолчанию это время составляет 30 секунд. Если для песочницы превышает это ограничение, домен приложения, обрабатывающий запрос (но не изолированный рабочий процесс), завершает работу. Это ограничение можно изменить, но только в собственном коде на основе объектной модели. Соответствующие компоненты объектной модели недоступны для песочницы, поэтому с помощью для песочницы изменить это ограничение невозможно.
По запросу, со штрафом процесса: существует набор из 15 дополнительных ограничений на использование ресурсов, которые применяются к запросам. Если запрос превышает одно из этих ограничений, процесс (и все запущенные в нем объекты для песочницы, в том числе не нарушающие ограничений) завершает работу. Эти ограничения также можно настроить с помощью SharePoint и в собственном коде на основе объектной модели.
По дням/по семейству веб-сайтов, со штрафом всего набора изолированных решений семейства веб-сайтов: каждому семейству веб-сайтов ежедневно выделяется настраиваемое максимальное количество баллов ресурсов. Эти баллы накапливаются по алгоритму, являющемуся интеллектуальной собственностью корпорации Майкрософт, который учитывает использование ресурсов по 15 категориям объектами для песочницы, установленными в семействе веб-сайтов. Если семейство веб-сайтов превышает максимально допустимое количество баллов (по умолчанию 300), выполнение всех объектов для песочницы в семействе веб-сайтов прерывается, и до конца дня запуск дополнительных объектов будет невозможен. Администраторы семейства веб-сайтов могут просмотреть текущее количество баллов ресурсов, использованных объектами для песочницы семейства веб-сайтов (и среднее значение за 14 дней) в Коллекции решений семейства веб-сайтов. Здесь также отображаются баллы ресурсов, использованные каждым решением. Администраторы могут деактивировать и удалить из коллекции любой объект для песочницы. Администраторы фермы могут настроить общее количество баллов за день или для отдельного семейства веб-сайтов в приложении центра администрирования. Количество баллов, назначенное каждому модулю для каждого типа ресурса, настраивается с помощью SharePoint или в собственном коде на основе объектной модели.
Измеряемые ресурсы
В приведенной ниже таблице перечислены 15 отслеживаемых системных ресурсов.
В столбце "Минимальное пороговое значение" указывается минимальное количество ресурсов по умолчанию, которое необходимо достигнуть перед агрегированием. Значение 0 означает, что агрегирование выполняется при любом, даже малом количестве ресурсов.
В столбце "Абсолютное ограничение" указывается количество ресурсов по умолчанию, при котором выполнение процесса немедленно прерывается. Обратите внимание, что для некоторых ресурсов в этом столбце указано значение 1. Это означает, что даже единственный экземпляр ресурса приводит к немедленному прерыванию процесса.
В столбце "Ресурсов на балл" указывается количество ресурсов по умолчанию, при котором к общему количеству баллов за день или для семейства веб-сайтов добавляется дополнительный балл.
Ресурс |
Примечания |
Минимальное пороговое значение |
Абсолютное ограничение |
Ресурсов на балл |
---|---|---|---|---|
AbnormalProcessTerminationCount |
Этот "ресурс" предназначен только для наложения дополнительного штрафа на объект для песочницы, выполнение которого было прервано по какой-либо другой причине. В частности, к общему количеству баллов за день или для семейства веб-сайтов добавляется 1 балл. Таким образом, этот штраф "ресурса" представляет ситуацию, при которой: 1) превышено абсолютное ограничение для одного из других показателей, в результате чего выполнение изолированного процесса было немедленно прервано, либо 2) домен приложения, обрабатывающий запрос, был завершен, поскольку обработка запроса заняла слишком много времени (см. выше раздел По запросу, со штрафом запроса). Таким образом, столбцы "Минимальное пороговое значение" и "Абсолютное ограничение" в данной строке неприменимы. |
0 |
1 |
1 |
CPUExecutionTime (в секундах) |
Абсолютное ограничение для данного ресурса неприменимо, пока его значение превышает описанное выше ограничение По запросу, со штрафом запроса. Как правило, администраторы оставляют более высокое значение, чтобы медленный запрос был прерван до того, как будет прерван весь изолированный рабочий процесс, включая все запущенные в нем объекты для песочницы, даже не нарушающие ограничений. |
0,1 |
60 |
200 |
CriticalExceptionCount |
Существуют следующие критические исключения:
|
0 |
3 |
10 |
IdlePercentProcessorTime |
Этот показатель применяется только к изолированным рабочим процессам, не обрабатывающим в настоящий момент никаких запросов. Такие процессы не должны сильно загружать процессор. Значение 10 в столбце "Абсолютное ограничение" означает, что если процесс загружает процессор более, чем на 10 процентов, процесс прерывается. Значение "Ресурсов на балл" никогда не используется. Однако при прерывании процесса применяется ограничение AbnormalProcessTerminationCount, и к общему количеству баллов ресурса за день добавляется один балл. |
0 |
10 |
100 |
InvocationCount |
0 |
100 |
100 |
|
PercentProcessorTime |
0 |
100 |
85 |
|
ProcessCPUCycles |
10 000 000 000 |
100 000 000 000 |
100 000 000 000 |
|
ProcessHandleCount |
500 |
5000 |
10 000 |
|
ProcessIOBytes |
0 |
100 000 000 |
10 000 000 |
|
ProcessThreadCount |
10 |
200 |
10 000 |
|
ProcessVirtualBytes |
100000000 |
4 000 000 000 |
1 000 000 000 |
|
SharePointDatabaseQueryCount |
Запросы, выполняемые к базам данных контента и конфигурации SharePoint. |
0 |
100 |
400 |
SharePointDatabaseQueryTime (в секундах) |
Количество времени, затраченное на запросы к базам данных контента и конфигурации SharePoint. |
0,1 |
60 |
20 |
UnhandledExceptionCount |
0 |
3 |
50 |
|
UnresponsiveprocessCount |
0 |
1 |
2 |
Важные API-интерфейсы использования ресурсов
Эти значения можно изменить с помощью объектной модели SharePoint Foundation. Ниже перечислены критически важные API-интерфейсы для выполнения этой задачи.
Объект класса SPResourceMeasure представляет один из показателей ресурса. Все такие объекты хранятся в базе данных конфигурации. У класса есть свойства для задания минимального порогового значения, абсолютного ограничения и количества ресурсов на балл. У класса также есть свойство Name, унаследованное от класса SPPersistedObject. Этот класс является запечатанным.
В свойстве SPUserCodeService.ResourceMeasures хранится коллекция объектов SPResourceMeasure, по одному для каждого отслеживаемого ресурса.
В свойстве SPUserCodeService.WorkerProcessExecutionTimeout хранится значение времени ожидания, используемое для описанного выше ограничения По запросу, со штрафом запроса.
Для получения ссылки на конкретный показатель ресурса воспользуйтесь в качестве индекса его именем или идентификатором GUID. Например, в приведенной ниже строке кода абсолютное ограничение для показателя SharePointDatabaseQueryTime уменьшается до 30 секунд.
SPUserCodeService.Local.ResourceMeasures["SharePointDatabaseQueryTime"].AbsoluteLimit = 30.0;
SPUserCodeService.Local.Update();
В приведенном ниже коде ограничение По запросу, со штрафом запроса увеличивается до 40 секунд.
SPUserCodeService.Local.WorkerProcessExecutionTimeout = 40;
SPUserCodeService.Local.Update();
Важно! |
---|
Чтобы изменения вступили в силу, необходимо перезапустить на всех серверах службу изолированного кода Microsoft SharePoint Foundation. |