Ограничения <ASP>

Общие сведения

Элемент <limits><asp> элемента задает следующие ограничения на подключение и очередь страницы Active Server (ASP) для служб IIS 7:

  • Атрибут bufferingLimit задает максимальный размер буфера ASP. Если буферизация ответов включена, этот атрибут управляет максимальным числом байтов, которое asp-страница может записать в буфер ответа до того, как произойдет очистка.

  • Атрибут maxRequestEntityAllowed указывает максимально допустимое количество байтов в теле сущности ASP-запроса. Если присутствует заголовок Content-Length и указывает объем данных, превышающий значение maxRequestEntityAllowed, iis возвращает ответ об ошибке HTTP 403 .

  • Атрибут processorThreadMax указывает максимальное количество рабочих потоков на процессор, которые могут создавать службы IIS.

    Примечание

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

  • Атрибут queueConnectionTestTime указывает количество секунд, в течение которых запрос может быть помещен в очередь, прежде чем ASP определит, подключен ли клиент. Если запрос помещается в очередь дольше, чем количество секунд, указанное атрибутом queueConnectionTestTime , ASP проверяет, подключен ли клиент, перед выполнением запроса. Если клиент больше не подключен, запрос не обрабатывается и удаляется из очереди.

    Примечание

    Чаще всего пользователи не ждут обработки asp-страниц не более нескольких секунд. Хотя максимальное время ожидания зависит от пользователя, общепринятый максимум составляет около 10 секунд. Атрибут queueConnectionTestTime можно использовать, чтобы службы IIS не тратили время на обработку запроса, который был прерван пользователем. Этот атрибут полезен для эффективной обработки ASP только до момента, когда ASP начинает обрабатывать скрипт. Однако после выполнения скрипта приложение должно продолжать проверка для клиентского подключения в соответствующее время с помощью метода IsClientConnected встроенного объекта Response ASP.

  • Атрибут queueTimeout указывает время (в секундах), в течение котором запросу скрипта ASP разрешено ждать в очереди. Когда запросы извлекаются из очереди, они проверяются, не истек ли срок их действия (ожидание превышает значение этого параметра). Просроченные запросы отклоняются с сообщением о том, что сервер слишком занят.

  • Атрибут requestQueueMax указывает максимальное количество одновременных запросов ASP, разрешенных в очереди. Любой клиентский браузер, который пытается запросить asp-файлы при заполнении очереди, отправляет ошибку HTTP 500 Server Too Busy(Http 500 Server Too Busy).

  • Атрибут scriptTimeout указывает (в секундах) период времени по умолчанию, когда ASP-страницы могут выполнять скрипт до завершения скрипта и записи события в журнал событий Windows. Скрипты ASP могут переопределить это значение с помощью свойства ScriptTimeout встроенного в ASP объекта Session . Свойство ScriptTimeout позволяет приложениям ASP задать более высокое значение времени ожидания скрипта. Например, этот параметр можно использовать для настройки времени ожидания после того, как определенный пользователь установит допустимый сеанс, войдя в систему или заказав продукт.

Совместимость

Версия Примечания
IIS 10.0 Элемент <limits> не был изменен в IIS 10.0.
IIS 8,5 Элемент <limits> не был изменен в IIS 8.5.
IIS 8,0 Элемент <limits> не был изменен в IIS 8.0.
IIS 7,5 Элемент <limits> не был изменен в IIS 7.5.
IIS 7.0 Элемент <limits> элемента появился <asp> в IIS 7.0.
IIS 6,0 Элемент <limits> заменяет следующие свойства метабазы IIS 6.0:
  • AspBufferingLimit
  • AspMaxRequestEntityAllowed
  • AspProcessorThreadMax
  • AspQueueConnectionTestTime
  • AspQueueTimeout
  • AspRequestQueueMax
  • AspScriptTimeout

Настройка

Для поддержки и настройки приложений ASP на веб-сервере необходимо установить модуль ASP. Чтобы установить модуль ASP, выполните следующие действия.

Windows Server 2012 или Windows Server 2012 R2

  1. На панели задач щелкните Диспетчер сервера.
  2. В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты. — В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.
  3. На странице Роли сервера разверните узел Веб-сервер (IIS),веб-сервер, узел Разработка приложений, а затем выберите ASP.
    Снимок экрана: ВСП, выбранный в разделе Разработка приложений в развернутом списке веб-сервера (I IS).
  4. Если появится диалоговое окно Добавление компонентов, необходимых для ASP? , нажмите кнопку Добавить компоненты. (Эта страница отображается только в том случае, если вы еще не установили службу роли расширений ISAPI на сервере.)
  5. На странице Роли сервера нажмите кнопку Далее.
  6. На странице Выбор компонентов нажмите кнопку Далее.
  7. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
  8. На странице Результаты нажмите кнопку Закрыть.

Windows 8 или Windows 8.1

  1. На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите пункт панель управления.

  2. В панель управления щелкните Программы и компоненты, а затем — Включить или выключить компоненты Windows.

  3. Разверните узлы Службы IIS, Службы Интернета, Компоненты разработки приложений, а затем выберите ASP.
    Снимок экрана: S P, выбранный в интерфейсе Windows 8.

    Примечание

    Роль расширения ISAPI будет выбрана, если она еще не установлена.

  4. Нажмите кнопку ОК.

  5. Щелкните Закрыть.

Windows Server 2008 или Windows Server 2008 R2

  1. На панели задач нажмите кнопку Пуск, наведите указатель мыши на пункт Администрирование, а затем щелкните диспетчер сервера.
  2. В области иерархии диспетчер сервера разверните узел Роли, а затем щелкните Веб-сервер (IIS) .
  3. В области Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.
  4. На странице Выбор служб ролеймастера добавления служб ролей выберите ASP.
    Снимок экрана: S P, выбранный в разделе Разработка приложений в мастере добавления служб ролей.
  5. Если появится диалоговое окно Добавление служб ролей, необходимых для ASP , щелкните Добавить необходимые службы ролей. (Эта страница отображается только в том случае, если вы еще не установили службу роли расширений ISAPI на сервере.)
    Снимок экрана: диалоговое окно
  6. На странице Выбор служб ролей нажмите кнопку Далее.
  7. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
  8. На странице Результаты нажмите кнопку Закрыть.

Windows Vista или Windows 7

  1. На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
  2. В панель управления щелкните Программы и компоненты, а затем — Включить или отключить компоненты Windows.
  3. Разверните узел Службы IIS, Затем — Службы Интернета, а затем Функции разработки приложений.
  4. Выберите ASP и нажмите кнопку ОК.
    Снимок экрана: S P, выбранный в интерфейсе Windows Vista или Windows 7.

Инструкции

Настройка параметров кэша ASP для сервера

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, выберите Сервис, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем выберите Пункт Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем панель управления.
      • Дважды щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
  2. В области Подключения выделите имя сервера.

  3. На домашней панели сервера дважды щелкните ЭЛЕМЕНТ ASP.
    Снимок экрана: панель

  4. В области ASP разверните раздел Свойства ограничений , настройте нужные параметры, а затем нажмите кнопку Применить в области Действия .
    Снимок экрана: область A S P с развернутой областью

Конфигурация

Атрибуты

Атрибут Описание
bufferingLimit Необязательный атрибут uint.

Указывает максимальный размер (в байтах) буфера ASP. Если включена буферизация ответов, этот атрибут управляет максимальным количеством байтов, которое страница ASP может записать в буфер ответа до сброса. Это значение является целым числом в диапазоне от 0 до 2147483647.

Значение по умолчанию — 4194304.
maxRequestEntityAllowed Необязательный атрибут uint.

Указывает максимальное число байтов, допустимое во всем тексте ASP-запроса. Это значение является целым числом в диапазоне от 0 до 2147483647.

Значение по умолчанию — 200000.
processorThreadMax Необязательный атрибут uint.

Указывает максимальное количество рабочих потоков на процессор, которое может создать ASP.

Значение по умолчанию — 25.
queueConnectionTestTime Необязательный атрибут timeSpan.

Указывает интервал времени (чч:мм:сс), после которого ASP будет проверка, чтобы узнать, подключен ли клиент по-прежнему перед выполнением запроса. Если клиент больше не подключен, запрос не обрабатывается и удаляется из очереди.

Значение по умолчанию — 00:00:03.
queueTimeout Необязательный атрибут timeSpan.

Указывает максимальный период времени (чч:мм:сс), когда ASP-запрос может ожидать в очереди запросов.

Значение по умолчанию — 00:00:00.
requestQueueMax Необязательный атрибут uint.

Указывает максимальное количество одновременных запросов ASP, разрешенных в очереди запросов.

Значение по умолчанию — 3000.
scriptTimeout Необязательный атрибут timeSpan.

Указывает максимальный период времени (чч:мм:сс), на котором ASP-страницы разрешают выполнение скрипта перед завершением сценария и записью события в журнал событий Windows.

Значение по умолчанию — 00:01:30.

Дочерние элементы

Отсутствует.

Образец конфигурации

В следующем примере конфигурации время ожидания скрипта ASP устанавливается в 2 минуты, время, в течение которого ASP будет проверка, чтобы узнать, подключен ли клиент перед выполнением запроса, равно 5 секундам, а максимальное количество одновременных запросов ASP в очереди запросов равно 1000.

<configuration>
   <system.webServer>
      <asp>
         <cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\ASP Compiled Templates" />
         <limits scriptTimeout="00:02:00"
            queueConnectionTestTime="00:00:05"
            requestQueueMax="1000" />
      </asp>
   <system.webServer>
<configuration>

Пример кода

В следующих примерах кода время ожидания скрипта ASP составляет 2 минуты, время, в течение которого ASP будет проверка, чтобы узнать, подключен ли клиент перед выполнением запроса, равно 5 секундам, а максимальное количество одновременных запросов ASP в очереди запросов равно 1000.

AppCmd.exe

appcmd.exe set config -section:system.webServer/asp /limits.scriptTimeout:"00:02:00" /commit:apphost
appcmd.exe set config -section:system.webServer/asp /limits.queueConnectionTestTime:"00:00:05" /commit:apphost
appcmd.exe set config -section:system.webServer/asp /limits.requestQueueMax:"1000" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection aspSection = config.GetSection("system.webServer/asp");

         ConfigurationElement limitsElement = aspSection.GetChildElement("limits");
         limitsElement["scriptTimeout"] = TimeSpan.Parse("00:02:00");
         limitsElement["queueConnectionTestTime"] = TimeSpan.Parse("00:00:05");
         limitsElement["requestQueueMax"] = 1000;

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim aspSection As ConfigurationSection = config.GetSection("system.webServer/asp")

      Dim limitsElement As ConfigurationElement = aspSection.GetChildElement("limits")
      limitsElement("scriptTimeout") = TimeSpan.Parse("00:02:00")
      limitsElement("queueConnectionTestTime") = TimeSpan.Parse("00:00:05")
      limitsElement("requestQueueMax") = 1000

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var aspSection = adminManager.GetAdminSection("system.webServer/asp", "MACHINE/WEBROOT/APPHOST");
var limitsElement = aspSection.ChildElements.Item("limits");
limitsElement.Properties.Item("scriptTimeout").Value = "00:02:00";
limitsElement.Properties.Item("queueConnectionTestTime").Value = "00:00:05";
limitsElement.Properties.Item("requestQueueMax").Value = 1000;

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set aspSection = adminManager.GetAdminSection("system.webServer/asp", "MACHINE/WEBROOT/APPHOST")
Set limitsElement = aspSection.ChildElements.Item("limits")
limitsElement.Properties.Item("scriptTimeout").Value = "00:02:00"
limitsElement.Properties.Item("queueConnectionTestTime").Value = "00:00:05"
limitsElement.Properties.Item("requestQueueMax").Value = 1000

adminManager.CommitChanges()