Архив блога

Май 2019 >>
п в с ч п с в
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
  

Категории





    Блоги

      Добавить

      Разогрев рабочих процессов или устойчивая работа сайта с использованием IIS 7.5 Warm-Up

      от Антон Бурцев в 18 августа 2010 г. 12:26

      Проблема.

      Вы сталкивались с тем, что при первом входе на сайт браузер замирает на несколько десятков секунд? Технология Warm-Up, появившаяся в IIS 7.5 позволяет решить эту проблему. Кроме того, с этой технологией можно перезапускать рабочие процессы в любой момент времени без влияния на время отклика сервера и доступность сайта. Рассмотрим две ситуации:
      1. Редко посещаемые сайты – приложение (или часть данных приложения) выгружается из памяти в связи с простоем и при поступлении запроса опять инициализируется.
      2. Высоконагруженные сайты – возникает необходимости принудительного перезапуска рабочего процесса (как правило, в связи со сбоями, утечками памяти, повисшими запросами и т.п.

      Редко посещаемые сайты

      В случае низкой посещаемости достаточно сделать две простые настройки:
      • Отключить выгрузку приложения в случае простоя
      • Отключить очистку кеша при простое.

      Отключение тайм-аута простоя

      Тут можно просто установить большой тайм-аут простоя для пула приложений.
      Тайм-аут прорстоя 10000 минут означает, что пул приложений не будет выгружаться при простоях до 20 дней.

      Настройка кеша

      В конфигурационном файле приложения web.config нужно добавить секцию

                 configuration/system.web/caching/cache

      и указать следующие параметры:

      caching>
        cache
           disableMemoryCollection="true"
           disableExpiration="true"
           privateBytesLimit="1073741824"
           percentagePhysicalMemoryUsedLimit="100"
           privateBytesPollTime="20:00:00"
        />
      caching>

      Такая настройка предотвратит выгрузку кеша.

      В случае нормальной работы сервера и IIS, отсутствия ошибок в ядре и модулях DNN эти две настройки позволят обеспечить быстрый ответ в любое время при любых простоях сервера. Однако, этого может оказаться недостаточно! Рабочие процессы могут перезапускаться по разным причинам, в том числе по причине сбоя. И после перезапуска рабочий процесс остается «недоинициализированным» до первого обращения. В этом случае, а так же в случае высоконагруженных систем нужно применять технологию Warm-Up, описанную ниже. Это позволит при неожиданных перезапусках рабочих процессов обеспечить автоматическую и полную инициализацию нового рабочего процесса.

      Высоконагруженные сайты.

      Тут ситуация другая. Если сайт интенсивно развивается, а функционал дорабатывается, то он может содержать много ошибок, которые будут приводить проблемам в работе сайта. Наиболее распространенные ошибки таковы:
      • Утечка памяти. На каждом запросе к серверу в рабочий процесс выделяет дополнительные 2-3 килобайта памяти. Через некоторое время память в системе закончится.
      • Бесконечные циклы. В результате ошибок в коде сайта могут образовываться бесконечные циклы. Несколько (по количеству процессоров и ядер) таких запросов и сайт «завален».
      • Повисание незавершенных и отключенных запросов. Это приводит не столько к утечке памяти, сколько к лишним действиям сервера и если таких запросов накопится десяток тысяч, то сайт начнет заметно «тормозить».
      В общем, ситуация такова, что нам время от времени нужно принудительно перезапускать рабочие процессы, чтобы избавиться от накопившегося «хлама». При этом нужно избежать того, чтобы запросы посетителей попадали в рабочий процесс, который еще не полностью инициализировался и не способен быстро обрабатывать запросы. Для этого в IIS 7.5 существует инструмент «Application Warm-Up» Скачать можно тут:
      • http://www.iis.net/download/applicationwarmup
      После установки данного приложения в IIS появляется новый инструмент
      Дважды кликнув по иконке мы попадаем в список, где можно перечислить каким страницам нашего сайта нужно обратиться перед тем. как направлять запросы посетителей на поднимаемый рабочий процесс.
      В большинстве случаев достаточно прогрузить главную страницу сайта и страницу входа.

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

      Распечатать
      Автор
      Антон Бурцев

      Интернет-порталы на базе DotNetNuke: Пресса-Онлайн, Библио-Парк.
      Проект XsltDb - разрабатывай для DotNetNuke с удовольствием!

      • Добавить комментарий
      • Комментировать