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


Настройка IIS 10.0

службы IIS (IIS) 10.0 входит в состав Windows Server 2022. В нем используется модель процессов, аналогичная модели процессов IIS 8.5 и IIS 7.0. Веб-драйвер в режиме ядра (http.sys) получает и направляет HTTP-запросы и удовлетворяет запросам из кэша ответов. Рабочие процессы регистрируются для подпространств URL-адресов и http.sys направляет запрос в соответствующий процесс (или набор процессов для пулов приложений).

HTTP.sys отвечает за управление подключениями и обработку запросов. Запрос может быть отдан из кэша HTTP.sys или передан в рабочий процесс для дальнейшей обработки. Можно настроить несколько рабочих процессов, что обеспечивает изоляцию по сниженной стоимости. Дополнительные сведения о том, как работает обработка запросов, см. на следующем рисунке:

request handling in iis 10.0

HTTP.sys включает кэш ответа. Если запрос соответствует записи в кэше ответа, HTTP.sys отправляет ответ кэша непосредственно из режима ядра. Некоторые платформы веб-приложений, такие как ASP.NET, предоставляют механизмы, позволяющие кэшировать динамическое содержимое в кэше режима ядра. Обработчик статических файлов в IIS 10.0 автоматически кэширует часто запрашиваемые файлы в http.sys.

Так как веб-сервер имеет компоненты в режиме ядра и пользовательском режиме, оба компонента должны быть настроены для оптимальной производительности. Поэтому настройка IIS 10.0 для определенной рабочей нагрузки включает настройку следующих компонентов:

  • HTTP.sys и связанный кэш режима ядра

  • Рабочие процессы и службы IIS в пользовательском режиме, включая конфигурацию пула приложений

  • Некоторые параметры настройки, влияющие на производительность

В следующих разделах описывается настройка аспектов режима ядра и пользовательского режима IIS 10.0.

Параметры режима ядра

Параметры, связанные с производительностью HTTP.sys, делятся на две широкие категории: управление кэшем и подключение и управление запросами. Все параметры реестра хранятся в следующей записи реестра:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters

Обратите внимание , что если служба HTTP уже запущена, необходимо перезапустить ее, чтобы изменения вступили в силу.

Параметры управления кэшем

Одним из преимуществ HTTP.sys является кэш в режиме ядра. Если ответ находится в кэше режима ядра, вы можете полностью удовлетворить HTTP-запрос из режима ядра, что значительно снижает затраты ЦП на обработку запроса. Однако кэш в режиме ядра IIS 10.0 основан на физической памяти, а стоимость записи — память, которую она занимает.

Запись в кэше полезна только в том случае, если она используется. Однако запись всегда использует физическую память, независимо от того, используется ли запись. Необходимо оценить полезность элемента в кэше (экономия от того, чтобы обслуживать его из кэша) и его затраты (занятая физическая память) за время существования записи, учитывая доступные ресурсы (ЦП и физическую память) и требования к рабочей нагрузке. HTTP.sys пытается сохранить только полезные, активно доступ к элементам в кэше, но вы можете повысить производительность веб-сервера, настроив кэш HTTP.sys для определенных рабочих нагрузок.

Ниже приведены некоторые полезные параметры для кэша режима ядра HTTP.sys.

  • Значение по умолчанию UriEnableCache : 1

    Ненулевое значение включает ответ в режиме ядра и кэширование фрагментов. Для большинства рабочих нагрузок кэш должен оставаться включено. Рассмотрите возможность отключения кэша, если ожидается очень низкий ответ и кэширование фрагментов.

  • Значение по умолчанию UriMaxCacheMegabyteCount : 0

    Ненулевое значение, указывающее максимальную память, доступную для кэша в режиме ядра. Значение по умолчанию 0 позволяет системе автоматически настраивать объем памяти, доступный для кэша.

    Примечание . Указание набора размеров только максимальное, и система может не позволить кэшу увеличиваться до максимального размера набора.

    Â

  • Значение по умолчанию UriMaxUriBytes: 262144 байт (256 КБ)

    Максимальный размер записи в кэше режима ядра. Ответы или фрагменты больше, чем это, не кэшируются. Если у вас достаточно памяти, попробуйте увеличить предел. Если объем памяти ограничен, а большие записи вытесниют меньшие, это может оказаться полезным для снижения предела.

  • Значение по умолчанию UriScavengerPeriod : 120 секунд

    Кэш HTTP.sys периодически сканируется с помощью scavenger, а записи, к которым не обращаются между сканированием scavenger, удаляются. Установка периода скавенгера на большое значение уменьшает количество сканирований scavenger. Однако использование памяти кэша может увеличиться, так как старые, менее часто доступные записи могут оставаться в кэше. Установка слишком низкого периода приводит к более частым сканированиям скавенгера, и это может привести к слишком большому объему сбросов и кэша.

Параметры управления запросами и подключениями

В Windows Server 2022 HTTP.sys автоматически управляет подключениями. Следующие параметры реестра больше не используются:

  • MaxConnections

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters\MaxConnections
    
  • Простой Подключение ionsHighMark

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters\IdleConnectionsHighMark
    
  • Простой Подключение ionsLowMark

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters\IdleConnectionsLowMark
    
  • IdleListTrimmerPeriod

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters\IdleListTrimmerPeriod
    
  • RequestBufferLookasideDepth

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters\RequestBufferLookasideDepth
    
  • InternalRequestLookasideDepth

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters\InternalRequestLookasideDepth
    

Параметры пользовательского режима

Параметры в этом разделе влияют на поведение рабочих процессов IIS 10.0. Большинство этих параметров можно найти в следующем XML-файле конфигурации:

%SystemRoot%\system32\inetsrv\config\applicationHost.config

Используйте Appcmd.exe, консоль управления IIS 10.0, веб-Администратор istration или IIS Администратор стистивание командлетов PowerShell для их изменения. Большинство параметров обнаруживаются автоматически и не требуют перезапуска рабочих процессов IIS 10.0 или сервера веб-приложений. Дополнительные сведения о файле конфигурации applicationHost.config см. в разделе "Введение в ApplicationHost.config".

Идеальный параметр ЦП для оборудования NUMA

Начиная с Windows Server 2016, IIS 10.0 поддерживает автоматическое идеальное назначение ЦП для потоков пула потоков для повышения производительности и масштабируемости на оборудовании NUMA. Эта функция включена по умолчанию и может быть настроена с помощью следующего раздела реестра:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\ThreadPoolUseIdealCpu

С включенной функцией диспетчер потоков IIS делает все возможное, чтобы равномерно распределять потоки пула потоков IIS по всем ЦП во всех узлах NUMA на основе их текущих загрузок. Как правило, рекомендуется сохранить этот параметр по умолчанию без изменений для оборудования NUMA.

Обратите внимание, что идеальный параметр ЦП отличается от параметров назначения узла NUMA рабочего процесса (numaNodeAssignment и numaNodeAffinityMode), представленных в Параметры ЦП для пула приложений. Идеальный параметр ЦП влияет на распределение потоков пула потоков IIS, а параметры назначения узла NUMA рабочего процесса определяют, на каком узле NUMA запускается рабочий процесс.

Параметры поведения кэша в режиме пользователя

В этом разделе описаны параметры, влияющие на поведение кэширования в IIS 10.0. Кэш пользовательского режима реализуется как модуль, который прослушивает глобальные события кэширования, создаваемые интегрированным конвейером. Чтобы полностью отключить кэш пользовательского режима, удалите модуль FileCacheModule (cachfile.dll) из списка установленных модулей в разделе конфигурации system.webServer/globalModules в applicationHost.config.

system.webServer/caching

Атрибут Description По умолч.
Включен Отключает кэш IIS в пользовательском режиме, если задано значение False. Если скорость попадания кэша очень мала, можно полностью отключить кэш, чтобы избежать затрат, связанных с путем кода кэша. Отключение кэша пользовательского режима не отключает кэш режима ядра. Истина
enableKernelCache Отключает кэш режима ядра при значении False. Истина
maxCacheSize Ограничивает размер кэша в пользовательском режиме IIS указанным размером в Мегабайтах. IIS настраивает значение по умолчанию в зависимости от доступной памяти. Тщательно выберите значение в зависимости от размера набора часто доступ к файлам, а также объема ОЗУ или адресного пространства процесса IIS. 0
maxResponseSize Кэширует файлы до указанного размера. Фактическое значение зависит от количества и размера крупнейших файлов в наборе данных и доступной ОЗУ. Кэширование больших, часто запрашиваемых файлов может снизить использование ЦП, доступ к диску и связанные задержки. 262144

Параметры поведения сжатия

IIS начиная с версии 7.0 сжимает статическое содержимое по умолчанию. Кроме того, сжатие динамического содержимого включено по умолчанию при установке DynamicCompressionModule. Сжатие уменьшает использование пропускной способности, но увеличивает использование ЦП. Сжатое содержимое кэшируется в кэше режима ядра, если это возможно. Начиная с версии 8.5 служба IIS позволяет управлять сжатием независимо для статического и динамического содержимого. Статическое содержимое обычно относится к содержимому, которое не изменяется, например GIF-файлы или HTM. Динамическое содержимое обычно создается скриптами или кодом на сервере, то есть ASP.NET страницами. Вы можете настроить классификацию любого конкретного расширения как статического или динамического.

Чтобы полностью отключить сжатие, удалите StaticCompressionModule и DynamicCompressionModule из списка модулей в разделе system.webServer/globalModules в applicationHost.config.

system.webServer/httpCompression

Атрибут Description По умолч.
staticCompression-EnableCpuUsage

staticCompression-DisableCpuUsage

dynamicCompression-EnableCpuUsage

dynamicCompression-DisableCpuUsage
Включает или отключает сжатие, если текущее процентное использование ЦП превышает или ниже указанных ограничений.

Начиная с IIS 7.0 сжатие автоматически отключено, если ЦП устойчивого состояния увеличивается выше порогового значения отключения. Сжатие включено, если ЦП снижается ниже порогового значения включения.
50, 100, 50 и 90 соответственно
организации Указывает каталог, в котором сжатые версии статических файлов временно хранятся и кэшируются. При частом доступе к этому каталогу рекомендуется переместить этот каталог с системного диска. %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files
doDiskSpaceLimiting Указывает, существует ли ограничение для объема дискового пространства всех сжатых файлов. Сжатые файлы хранятся в каталоге сжатия, указанном атрибутом каталога . Истина
maxDiskSpaceUsage Указывает количество байтов места на диске, которое сжатые файлы могут занимать в каталоге сжатия.

Этот параметр может потребоваться увеличить, если общий размер всего сжатого содержимого слишком велик.
100 МБ

system.webServer/urlCompression

Атрибут Description По умолч.
DoStaticCompression Указывает, сжимается ли статическое содержимое. Истина
doDynamicCompression Указывает, сжимается ли динамическое содержимое. Истина

Примечание.

Для серверов, работающих под управлением IIS 10.0 с низким уровнем среднего использования ЦП, рекомендуется включить сжатие динамического содержимого, особенно если ответы большие. Сначала это необходимо сделать в тестовой среде, чтобы оценить влияние на использование ЦП из базового плана.

Настройка списка документов по умолчанию

Модуль документов по умолчанию обрабатывает HTTP-запросы для корневого каталога и преобразует их в запросы для определенного файла, например Default.htm или Index.htm. В среднем около 25 процентов всех запросов в Интернете проходят по умолчанию путь к документу. Это значительно зависит от отдельных сайтов. Если HTTP-запрос не указывает имя файла, модуль документов по умолчанию ищет список разрешенных документов по умолчанию для каждого имени в файловой системе. Это может негативно повлиять на производительность, особенно если достичь содержимого требуется выполнить круговую поездку по сети или коснуться диска.

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

Вы можете выборочно задать поведение документа по умолчанию для определенных URL-адресов, настраивая конфигурацию внутри тега расположения в applicationHost.config или вставляя файл web.config непосредственно в каталог содержимого. Это позволяет использовать гибридный подход, который позволяет использовать документы по умолчанию только в тех случаях, когда они необходимы, и задает список правильным именем файла для каждого URL-адреса.

Чтобы полностью отключить документы по умолчанию, удалите DefaultDocumentModule из списка модулей в разделе system.webServer/globalModules в applicationHost.config.

system.webServer/defaultDocument

Атрибут Description По умолч.
включена Указывает, что документы по умолчанию включены. Истина
<files> - элемент Указывает имена файлов, настроенные в качестве документов по умолчанию. Список по умолчанию — Default.htm, Default.asp, Index.htm, Index.html, Iisstart.htm и Default.aspx.

Центральное двоичное ведение журнала

Если в сеансе сервера есть множество групп URL-адресов, процесс создания сотен форматированных файлов журнала для отдельных групп URL-адресов и записи данных журнала на диск может быстро использовать ценные ресурсы ЦП и памяти, тем самым создавая проблемы с производительностью и масштабируемостью. Централизованное двоичное ведение журнала сводит к минимуму объем системных ресурсов, используемых для ведения журнала, в то же время предоставляя подробные данные журнала для организаций, которым это требуется. Для анализа журналов двоичного формата требуется средство последующей обработки.

Вы можете включить централизованное двоичное ведение журнала, задав для атрибута centralLogFileMode значение CentralBinary и установив для атрибута включено значение True. Рекомендуется переместить расположение центрального файла журнала с системного раздела и на выделенный диск ведения журнала, чтобы избежать конфликтов между действиями системы и действиями ведения журнала.

system.applicationHost/log

Атрибут Description По умолч.
centralLogFileMode Задает режим ведения журнала для сервера. Измените это значение на CentralBinary, чтобы включить централизованное двоичное ведение журнала. Site

system.applicationHost/log/centralBinaryLogFile

Атрибут Description По умолч.
включена Указывает, включена ли центральное двоичное ведение журнала. False
организации Указывает каталог, в котором записываются записи журнала. %SystemDrive%\inetpub\logs\LogFiles

Настройка приложений и сайтов

Следующие параметры относятся к пулу приложений и настройке сайта.

system.applicationHost/applicationPools/applicationPoolDefaults

Атрибут Description По умолч.
queueLength Указывает, HTTP.sys сколько запросов помещается в очередь для пула приложений, прежде чем будущие запросы отклоняются. При превышении значения этого свойства IIS отклоняет последующие запросы с ошибкой 503.

Рекомендуется увеличить это для приложений, которые взаимодействуют с внутренними хранилищами данных с высокой задержкой, если наблюдается ошибка 503.
1000
enable32BitAppOnWin64 Если значение True, позволяет 32-разрядному приложению работать на компьютере с 64-разрядным процессором.

Рекомендуется включить 32-разрядный режим, если потребление памяти является проблемой. Поскольку размеры указателей и размер инструкций меньше, 32-разрядные приложения используют меньше памяти, чем 64-разрядные приложения. Недостаток работы 32-разрядных приложений на 64-разрядном компьютере заключается в том, что адресное пространство в режиме пользователя ограничено 4 ГБ.
False

system.applicationHost/sites/VirtualDirectoryDefault

Атрибут Description По умолч.
allowSubDirConfig Указывает, ищет ли СЛУЖБЫ IIS файлы web.config в каталогах содержимого ниже текущего уровня (True) или не ищет файлы web.config в каталогах содержимого ниже текущего уровня (False). Введя простое ограничение, которое разрешает настройку только в виртуальных каталогах, IIS 10.0 может знать, что, если только /<name>.htm не является виртуальным каталогом, он не должен искать файл конфигурации. Пропуск дополнительных операций с файлами может значительно повысить производительность веб-сайтов с очень большим набором статического содержимого. Истина

Управление модулями IIS 10.0

СЛУЖБА IIS 10.0 была включена в несколько расширяемых пользователем модулей для поддержки модульной структуры. Эта факторизация имеет небольшую стоимость. Для каждого модуля интегрированный конвейер должен вызывать модуль для каждого события, соответствующего модулю. Это происходит независимо от того, должен ли модуль выполнять любую работу. Вы можете сохранить циклы ЦП и память, удалив все модули, которые не относятся к конкретному веб-сайту.

Веб-сервер, настроенный для простых статических файлов, может включать только следующие пять модулей: UriCacheModule, HttpCacheModule, StaticFileModule, AnonymousAuthenticationModule и HttpLoggingModule.

Чтобы удалить модули из applicationHost.config, удалите все ссылки на модуль из разделов system.webServer/handlers и system.webServer/modules в дополнение к удалению объявления модуля в system.webServer/globalModules.

Классические параметры ASP

Основная стоимость обработки классического запроса ASP включает инициализацию обработчика скриптов, компиляцию запрошенного скрипта ASP в шаблон ASP и выполнение шаблона в обработчике скриптов. Хотя стоимость выполнения шаблона зависит от сложности запрошенного скрипта ASP, классический модуль ASP IIS может кэшировать обработчики скриптов в шаблонах памяти и кэша как в памяти, так и на диске (только если переполнение кэша шаблонов в памяти) для повышения производительности в сценариях, связанных с ЦП.

Следующие параметры используются для настройки классического кэша шаблонов ASP и кэша обработчика скриптов, и они не влияют на параметры ASP.NET.

system.webServer/asp/cache

Атрибут Description По умолч.
diskTemplateCacheDirectory Имя каталога, который ASP использует для хранения скомпилированных шаблонов при переполнении кэша в памяти.

Рекомендация. Задайте для каталога, который не используется, например диск, который не предоставляет общий доступ к операционной системе, журналу IIS или другому часто доступу к содержимому.
%SystemDrive%\inetpub\temp\ASP Compiled Templates
maxDiskTemplateCacheFiles Указывает максимальное количество скомпилированных шаблонов ASP, которые можно кэшировать на диске.

Рекомендация. Задайте максимальное значение 0x7FFFFFFF.
2000
scriptFileCacheSize Этот атрибут указывает максимальное количество скомпилированных шаблонов ASP, которые можно кэшировать в памяти.

Рекомендация. Задайте по крайней мере столько, сколько число часто запрашиваемых скриптов ASP, обслуживаемых пулом приложений. Если это возможно, задайте максимально допустимое количество шаблонов ASP, как разрешено ограничение памяти.
500
scriptEngineCacheMax Указывает максимальное количество обработчиков скриптов, которые будут хранить кэшированные в памяти.

Рекомендация. Задайте по крайней мере столько, сколько число часто запрашиваемых скриптов ASP, обслуживаемых пулом приложений. Если это возможно, задайте максимальное количество обработчиков скриптов, как разрешено ограничение памяти.
250

system.webServer/asp/limits

Атрибут Description По умолч.
processorThreadMax Указывает максимальное количество рабочих потоков на процессор, которые может создать ASP. Увеличьте, если текущий параметр недостаточно для обработки нагрузки, что может привести к ошибкам при обслуживании запросов или возникновении недостаточного использования ресурсов ЦП. 25

system.webServer/asp/comPlus

Атрибут Description По умолч.
executeInMta Установите значение True , если обнаружены ошибки или сбои во время обслуживания содержимого ASP IIS. Это может произойти, например, при размещении нескольких изолированных сайтов, в которых каждый сайт выполняется в рамках собственного рабочего процесса. Ошибки обычно сообщаются из COM+ в Просмотр событий. Этот параметр включает многопотоковую модель квартиры в ASP. False

параметр параллелизма ASP.NET

ASP.NET 3.5

По умолчанию ASP.NET ограничивает параллелизм запросов, чтобы уменьшить потребление памяти устойчивого состояния на сервере. Приложения с высокой параллелизмом могут потребоваться изменить некоторые параметры, чтобы повысить общую производительность. Этот параметр можно изменить в файле aspnet.config:

<system.web>
  <applicationPool maxConcurrentRequestsPerCPU="5000"/>
</system.web>

Следующий параметр полезен для полного использования ресурсов в системе:

  • значение по умолчанию maxConcurrentRequestPerCpu : 5000

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

ASP.NET 4.6

Помимо параметра maxConcurrentRequestPerCpu, ASP.NET 4.7 также предоставляет параметры для повышения производительности в приложениях, которые сильно зависят от асинхронной операции. Параметр можно изменить в файле aspnet.config.

<system.web>
  <applicationPool percentCpuLimit="90" percentCpuLimitMinActiveRequestPerCpu="100"/>
</system.web>
  • Значение по умолчанию percentCpuLimit : 90 Асинхронный запрос имеет некоторые проблемы масштабируемости, когда огромная нагрузка (за пределами аппаратных возможностей) помещается в такой сценарий. Проблема связана с характером выделения в асинхронных сценариях. В этих условиях выделение будет происходить при запуске асинхронной операции, и она будет использоваться при завершении. К тому времени объекты были перемещены в поколение 1 или 2 с помощью GC. Когда это произойдет, увеличение нагрузки будет отображаться на запросе в секунду (rps) до точки. Когда мы пройдем этот момент, время, затраченное в GC, начнет стать проблемой, и rps начнет падать, имея негативный эффект масштабирования. Чтобы устранить проблему, когда загрузка ЦП превышает параметр percentCpuLimit, запросы будут отправляться в ASP.NET собственной очереди.
  • значение по умолчанию percentCpuLimitMinActiveRequestPerCpu По умолчанию: регулирование ЦП (процентCpuLimit) не зависит от количества запросов, а на том, насколько дороги они. В результате может быть всего несколько запросов с большим объемом ЦП, что приводит к резервному копированию в собственной очереди без способа пустить его в сторону от входящих запросов. Чтобы решить эту проблему, можно использовать процентCpuLimitMinActiveRequestPerCpu, чтобы обеспечить минимальное количество запросов перед регулированием.

Варианты рабочего процесса и переработки

Можно настроить параметры для повторного использования рабочих процессов IIS и предоставить практические решения для острых ситуаций или событий, не требуя вмешательства или сброса службы или компьютера. Такие ситуации и события включают утечки памяти, увеличение нагрузки памяти или неответствующие или неактивные рабочие процессы. В обычных условиях варианты переработки могут не потребоваться, и повторное использование может быть отключено или система может быть настроена для переработки очень редко.

Вы можете включить переработку процессов для конкретного приложения, добавив атрибуты в элемент recycling/periodicRestart . Событие перезапуска может быть активировано несколькими событиями, включая использование памяти, фиксированное количество запросов и фиксированный период времени. При перезапуске рабочего процесса очереди и выполнения запросов удаляются, а новый процесс одновременно запускается для обслуживания новых запросов. Элемент recycling/periodicRestart является для каждого приложения, что означает, что каждый атрибут в следующей таблице секционируется на основе каждого приложения.

system.applicationHost/applicationPools/ApplicationPoolDefaults/recycling/periodicRestart

Атрибут Description По умолч.
Память Включите повторное использование процесса, если потребление виртуальной памяти превышает указанное ограничение в килобайтах. Это полезный параметр для 32-разрядных компьютеров с небольшим адресным пространством в 2 ГБ. Это может помочь избежать неудачных запросов из-за ошибок вне памяти. 0
privateMemory Включите повторное использование процесса, если выделение частной памяти превышает указанное ограничение в килобайтах. 0
requests Включите переработку процессов после определенного количества запросов. 0
Время Включите повторное использование процесса после указанного периода времени. 29:00:00

Динамическая настройка страницы рабочего процесса

Начиная с Windows Server 2012 R2 служба IIS предлагает возможность настройки рабочего процесса для приостановки после того, как они были простои в течение некоторого времени (помимо варианта завершения, который существовал с IIS 7).

Основная цель как простоя рабочих процессов, так и недействующих функций завершения рабочего процесса заключается в сохранении использования памяти на сервере, так как сайт может потреблять много памяти, даже если он просто сидит там, прослушивая. В зависимости от технологии, используемой на сайте (статическое содержимое и ASP.NET и другие платформы), используемая память может находиться в любом месте от 10 МБ до сотен МБ, и это означает, что если сервер настроен с множеством сайтов, выясните наиболее эффективные параметры для ваших сайтов, может значительно повысить производительность как активных, так и приостановленных сайтов.

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

Примечание.

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

Еще один фактор, который следует учитывать, заключается в том, что если сайт использует много памяти, то сам процесс приостановки принимает платный счет, так как компьютер должен записывать данные, используемые рабочим процессом на диск. Если рабочий процесс использует большой фрагмент памяти, то приостановка может оказаться более дорогой, чем затраты на запуск резервного копирования.

Чтобы лучше всего использовать функцию приостановки рабочего процесса, необходимо просмотреть сайты в каждом пуле приложений и решить, какой должен быть приостановлен, который должен быть завершен, и который должен быть активным на неопределенный срок. Для каждого действия и каждого сайта необходимо определить идеальный период времени ожидания.

В идеале, сайты, которые вы будете настраивать для приостановки или прекращения, являются те, которые имеют посетителей каждый день, но недостаточно, чтобы гарантировать сохранение его активно все время. Обычно это сайты с около 20 уникальных посетителей в день или меньше. Вы можете проанализировать шаблоны трафика с помощью файлов журнала сайта и вычислить средний ежедневный трафик.

Помните, что когда конкретный пользователь подключается к сайту, он обычно остается на нем по крайней мере некоторое время, делая дополнительные запросы, и поэтому просто подсчет ежедневных запросов может не точно отражать реальные шаблоны трафика. Чтобы получить более точное чтение, можно также использовать средство, например Microsoft Excel, для вычисления среднего времени между запросами. Например:

Число Запросить URL-адрес Время запроса Разностная версия
1 /SourceSilverLight/Geosource.web/grosource.html 10:01
2 /SourceSilverLight/Geosource.web/sliverlight.js 10:10 0:09
3 /SourceSilverLight/Geosource.web/clientbin/geo/1.aspx 10:11 0:01
4 /lClientAccessPolicy.xml 10:12 0:01
5 / SourceSilverLight/GeosourcewebService/Service.asmx 10:23 0:11
6 / SourceSilverLight/Geosource.web/GeoSearchServer...?. 11:50 1:27
7 /rest/Services/CachedServices/Silverlight_load_la...| 12:50 01:00
8 /rest/Services/CachedServices/Silverlight_basemap...|. 12:51 0:01
9 /rest/Services/DynamicService/ Silverlight_basemap...?. 12:59 0:08
10 /rest/Services/CachedServices/Ortho_2004_cache.as... 13:40 0:41
11 /rest/Services/CachedServices/Ortho_2005_cache.js 13:40 00:00
12 /rest/Services/CachedServices/OrthoBaseEngine.aspx 13:41 0:01

Сложная часть, однако, определяет, какой параметр применить, чтобы сделать это. В нашем случае сайт получает кучу запросов от пользователей, а в таблице выше показано, что в течение 4 часов произошло всего 4 уникальных сеанса. С параметрами по умолчанию для приостановки рабочего процесса пула приложений сайт будет завершен после истечения времени ожидания по умолчанию 20 минут, что означает, что каждый из этих пользователей будет испытывать цикл создания сайта. Это делает его идеальным кандидатом на приостановку рабочего процесса, так как в течение большей части времени сайт неактивен, и поэтому приостановка будет сохранять ресурсы, и позволить пользователям добраться до сайта почти мгновенно.

Последнее и очень важное примечание об этом заключается в том, что производительность диска имеет решающее значение для этой функции. Так как процесс приостановки и пробуждения включает запись и чтение большого объема данных на жестком диске, настоятельно рекомендуется использовать быстрый диск для этого. Твердотельные накопители (SSD) идеально подходят и настоятельно рекомендуется для этого, и вы должны убедиться, что файл страницы Windows хранится на нем (если операционная система не установлена на SSD, настройте операционную систему для перемещения файла страницы в него).

Независимо от того, используется ли ssd или нет, мы также рекомендуем исправить размер файла страницы, чтобы разместить данные на странице без изменения размера файла. Изменение размера файла страницы может произойти, когда операционная система должна хранить данные в файле страницы, так как по умолчанию Windows настраивается для автоматической настройки размера на основе необходимости. Установив размер фиксированного размера, можно предотвратить изменение размера и повысить производительность.

Чтобы настроить предварительно фиксированный размер файла страницы, необходимо вычислить его идеальный размер, который зависит от количества сайтов, которые будут приостановлены, и сколько памяти они используют. Если среднее значение составляет 200 МБ для активного рабочего процесса и у вас есть 500 сайтов на серверах, которые будут приостановлены, файл страницы должен быть по крайней мере (200 * 500) МБ по сравнению с базовым размером файла страницы (поэтому базовый + 100 ГБ в нашем примере).

Примечание.

Когда сайты приостановлены, они будут использовать около 6 МБ каждый, поэтому в нашем случае использование памяти, если все сайты приостановлены, будет около 3 ГБ. В действительности, однако, вы, вероятно, никогда не будете иметь их все приостановлены одновременно.

Параметры настройки уровня транспорта

Использование протокола TLS накладывает дополнительные затраты на ЦП. Самым дорогим компонентом TLS является стоимость создания сеанса, так как она включает полное подтверждение. Повторное подключение, шифрование и расшифровка также добавляются в стоимость. Для повышения производительности TLS сделайте следующее:

  • Включение поддержки HTTP для сеансов TLS. Это устраняет затраты на создание сеанса.

  • Повторное использование сеансов при необходимости, особенно при неисправном трафике.

  • Выборочно примените шифрование только к страницам или частям сайта, которым он нужен, а ко всему сайту.

Примечание.

  • Более крупные ключи обеспечивают большую безопасность, но они также используют больше времени ЦП.
  • Все компоненты могут не быть зашифрованы. Однако сочетание обычного HTTP и HTTPS может привести к всплывающему предупреждению о том, что не все содержимое на странице безопасно.

Интерфейс программирования приложений Internet Server (ISAPI)

Для приложений ISAPI не требуются специальные параметры настройки. Если вы напишете частное расширение ISAPI, убедитесь, что он записывается для использования производительности и ресурсов.

Рекомендации по настройке управляемого кода

Интегрированная модель конвейера в IIS 10.0 обеспечивает высокую степень гибкости и расширяемости. Пользовательские модули, реализованные в машинном или управляемом коде, можно вставить в конвейер или заменить существующие модули. Хотя эта модель расширяемости обеспечивает удобство и простоту, прежде чем вставлять новые управляемые модули, которые перехватывались в глобальные события. Добавление глобального управляемого модуля означает, что все запросы, включая статические запросы файлов, должны касаться управляемого кода. Пользовательские модули подвержены таким событиям, как сборка мусора. Кроме того, пользовательские модули добавляют значительные затраты на ЦП из-за маршалинга данных между машинным и управляемым кодом. Если это возможно, необходимо задать для управляемого модуля предустановку managedHandler для управляемого модуля.

Чтобы повысить производительность холодного запуска, убедитесь, что вы предварительно компилируйте веб-сайт ASP.NET или используете функцию инициализации приложений IIS для прогревания приложения.

Если состояние сеанса не требуется, убедитесь, что вы отключите его для каждой страницы.

Если существует много связанных операций ввода-вывода, попробуйте использовать асинхронную версию соответствующих API, что обеспечит вам гораздо лучшую масштабируемость.

Кроме того, использование кэша выходных данных также повышает производительность веб-сайта.

При запуске нескольких узлов, содержащих скрипты ASP.NET в изолированном режиме (один пул приложений на сайт), отслеживайте использование памяти. Убедитесь, что на сервере достаточно ОЗУ для ожидаемого количества одновременных пулов приложений. Рекомендуется использовать несколько доменов приложений вместо нескольких изолированных процессов.

Другие проблемы, влияющие на производительность IIS

Следующие проблемы могут повлиять на производительность IIS:

  • Установка фильтров, которые не относятся к кэшу

    Установка фильтра, не поддерживающего http-кэш, приводит к тому, что службы IIS полностью отключают кэширование, что приводит к снижению производительности. Фильтры ISAPI, написанные до IIS 6.0, могут привести к этому поведению.

  • Общие запросы интерфейса шлюза (CGI)

    По соображениям производительности использование приложений CGI для обслуживания запросов не рекомендуется использовать в IIS. Часто создавайте и удаляя процессы CGI включает значительные затраты. Лучшие варианты включают использование скриптов приложений FastCGI, сценариев приложений ISAPI и ASP или ASP.NET скриптов. Изоляция доступна для каждого из этих вариантов.

Дополнительные справочники